代码之家  ›  专栏  ›  技术社区  ›  Ramiz Uddin

这个匿名对象初始化语法有什么问题?

  •  0
  • Ramiz Uddin  · 技术社区  · 15 年前

    这个匿名对象初始化语法有什么问题?

    If (Not row Is Nothing) Then
        Dim info As New CultureInfo(Conversions.ToString(row.Item("cultureId"))) With { _
                .NumberFormat = New With {.CurrencySymbol = Conversions.ToString(row.Item("symbol")), _
                      .CurrencyGroupSeparator = Conversions.ToString(row.Item("thousSep")), _
                      .CurrencyDecimalSeparator = Conversions.ToString(row.Item("thousSep")), _
                      .CurrencyDecimalDigits = Conversions.ToInteger(row.Item("decimals")), _
                      .NumberGroupSeparator = Conversions.ToString(row.Item("thousSep")), _
                      .NumberDecimalSeparator = Conversions.ToString(row.Item("thousSep")), _
                      .NumberDecimalDigits = Conversions.ToInteger(row.Item("decimals"))}}}
        hashtable.Add(key, info)
    End If
    

    这是语法错误或对象初始化类型转换问题。

    谢谢。

    2 回复  |  直到 15 年前
        1
  •  2
  •   itowlson    15 年前

    您正在尝试将CultureInformation的NumberFormat设置为匿名类型实例。cultureinfo.numberformat是numberformatinfo类型。所以你需要写:

    Dim info As New CultureInfo(...) With { _
      .NumberFormat = New NumberFormatInfo With { ... } _
    }                   ' ^^^^^^^^^^^^^^^^
    
        2
  •  1
  •   Prutswonder    15 年前

    请先尝试此非匿名语法:

    If (Not row Is Nothing) Then
         Dim numberFormat as New NumberFormat()
         numberFormat.CurrencySymbol = Conversions.ToString(row.Item("symbol"))
         numberFormat.CurrencyGroupSeparator = Conversions.ToString(row.Item("thousSep"))
         numberFormat.CurrencyDecimalSeparator = Conversions.ToString(row.Item("thousSep"))
         numberFormat.CurrencyDecimalDigits = Conversions.ToInteger(row.Item("decimals"))
         numberFormat.NumberGroupSeparator = Conversions.ToString(row.Item("thousSep"))
         numberFormat.NumberDecimalSeparator = Conversions.ToString(row.Item("thousSep"))
         numberFormat.NumberDecimalDigits = Conversions.ToInteger(row.Item("decimals"))
    
         Dim info As New CultureInfo(Conversions.ToString(row.Item("cultureId")))
         info.NumberFormat = numberFormat
    
         hashtable.Add(key, info)
    End If
    

    如果有效,请尝试一步一步地将其重构回所需的语法。在每个步骤中,检查代码是否仍然有效。如果没有,那么你已经找到了你的问题,你可以尝试找到解决的办法。