2010-04-08 81 views
0

這個匿名對象初始化語法有什麼問題?這個匿名對象初始化語法有什麼問題?

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

您試圖將CultureInfo的NumberFormat設置爲匿名類型實例。 CultureInfo.NumberFormat是NumberFormatInfo類型。所以,你需要寫:

Dim info As New CultureInfo(...) With { _ 
    .NumberFormat = New NumberFormatInfo With { ... } _ 
}     ' ^^^^^^^^^^^^^^^^ 
+0

謝謝@itowlson。有用! – 2010-04-08 08:43:44

1

首先嚐試這種非匿名語法:

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 

如果它的工作原理,嘗試重構它返回到你想要的語法,一步一步來。每一步,檢查代碼是否仍然有效。如果沒有,那麼你已經找到了你的問題,你可以嘗試找到一個解決方案。

+0

@Prutswonder你是對的我應該儘量避免匿名聲明使其變得簡單:)感謝您的幫助。 – 2010-04-08 08:44:44