2011-09-15 47 views
4

在C#,我可以聲明這樣C#到VB.NET數組初始化

object[] Parameters; 

數組變量初始化這樣的:

Parameters = new object[20]; 

在Visual Basic,聲明和初始化陣列很容易:

Dim Parameters(19) As Object 
Dim Parameters As Object(19) ' Alternative syntax 

我怎麼會初始化一個已經被宣佈爲VB.NET數組變量

Parameters = New Object(19)不起作用。


例如,我將如何將以下內容轉換爲VB.NET?

int value = 20; 
object[] Parameters; 
if (value > 10) 
{ 
    Parameters = new Object[20]; 
} 

回答

6

基本上相同的Visual Basic代碼爲別人,但我會利用這個機會增加的風格有點:

Dim value = 20    ' Type inference, like "var" in C# 
Dim parameters() As Object ' Could also be "parameters As Object()" 
If value > 10 Then 
    parameters = New Object(19) {} ' That's right, Visual Basic uses the maximum index 
End If        ' instead of the number of elements. 

局部變量(parameters)必須以小寫字母開頭。這是一個建立規則,並有助於獲得在堆棧溢出 正確的語法高亮(這也適用於原來的C#代碼)。

那麼,爲什麼在Visual Basic中需要{}括號?在Visual Basic中,方法調用和數組訪問均使用括號(...)。因此,New X(4)可能意味着:

  • 創建X類型的一個新對象,並傳遞4給構造,
  • 創建的X 5元素[原文如此]數組。

要區分這兩種情況,請在第二種情況下使用數組初始值設定項語法。通常,大括號包含實際值:

myArray = New Integer() {1, 2, 3} 
4

如果你是懶惰和我一樣,你可以使用一個online converter這將產生:

Dim value As Integer = 20 
Dim Parameters As Object() 
If value > 10 Then 
    Parameters = New [Object](19) {} 
End If 

而且如果你不喜歡我,想轉移到VB的文檔,以瞭解VB.NET頭.NET語法並開始閱讀。

+1

如果您已經在VB.NET中編程了任意長度的時間,您可以考慮用(值-1)替換常數19。如果價值變量值發生變化,會爲您節省一些頭痛的時間。這是在線轉換器的問題。 – CommonSense

+0

@CommonSense,幸運的是,我從來沒有在我的編程生涯中使用這種語言。當有場合介紹時,我簡單地將代碼重寫爲C#,因爲我無法忍受VB.NET。 –

6
Dim value As Integer = 20 
Dim Parameters() as object 
If value > 10 then 
    Parameters = new Object(value - 1){} 
end if