簡體   English   中英

如何在C#中聲明和使用數組

[英]How to declare and use arrays in C#

我對C#數組有一個看似基本的問題。 我是一個初學者,但這是一個非常基本的問題,現在已經讓我穿了半個多小時。 我正在使用C#2010 Express。

這段代碼: -

string[] motionCam = new string[8];
motionCam[1] = "Stop";

報告錯誤:

無法在變量聲明中指定數組大小(嘗試使用'new'表達式初始化)

即使我從教育網站復制和粘貼的基本數組示例報告同樣的錯誤,我也不知道為什么。

另一個答案表明你不能將這行代碼放在類聲明中但在方法體之外是正確的。 我認為描述為什么你得到奇怪的錯誤信息可能會很有趣。 編譯器正在拼命試圖弄清楚你的意思是X[Y] = Z; ,它假定你的意思是:

X[] F = Z;

也就是說,您不小心將數組的大小放在數組聲明中 - 這是最近學習過C#的C程序員中一個非常常見的錯誤 - 並且省略了該字段的名稱。

因此,編譯器提供了它可以提供的最豐富的錯誤:您可能是一個C程序員,他忘記了數組的大小是在初始化程序中,而不是類型聲明。

在這種情況下,猜測是完全錯誤的; 這里的錯誤是你不小心把聲明放在了一個字段聲明的地方。 但大多數時候,這是一個合理的猜測。

雖然您粘貼的代碼有效,但您的問題是其他問題。
也許你在班級宣布它。

motionCam[1] = "Stop"; 是一個賦值而不是聲明,這就是編譯器喊叫的原因。

這個人的問題誰了,同樣的問題。

底線是您不能在類級別擁有非聲明語句。

你把它放在課堂上。 (第二行)

把它放在一個方法中。

public partial class Form1 : Form
{
    string[] motionCam = new string[8];
    public Form1()
    {
        InitializeComponent();
        motionCam[1] = "Stop";
    }
}

正如其他人所說,還有比只是一行代碼更給它。 在任何情況下,編譯器正在尋找的特定事物(可能不是想要的)是這樣的:

var motionCam = new string[] { "Zero", "Stop" /*[1]*/, "Two" };

這是initializing with a 'new' expression部分initializing with a 'new' expression

嘗試將此行放在方法中(可能是類構造函數):

motionCam[1] = "Stop";

問題是你正在嘗試創建數組(這很好),然后在類聲明中填充它(不是)。

這是必須進入方法的代碼。 如果你把它直接放在一個類中,它會給出錯誤。

第一行是一個有效的聲明,因此可以直接在一個類中。
第二行是賦值語句,而不是聲明。 因此它只能出現在方法中,而不能直接出現在類中。

把它放到這樣的方法中:

static void MyMethod()
{
  string[] motionCam = new string[8];
  motionCam[1] = "Stop";
}

如果將此代碼直接放在類中,C#編譯器會將motionCam[1]解釋為類型。 在C或C ++中,這將是一個大小為1motionCam元素數組。 在C#中它無效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM