如何在C#中声明和使用数组

Ope*_*r63 4 .net c# arrays

我对C#数组有一个看似基本的问题.我是一个初学者,但这是一个非常基本的问题,现在已经让我穿了半个多小时.我正在使用C#2010 Express.

这段代码: -

string[] motionCam = new string[8];
motionCam[1] = "Stop";
Run Code Online (Sandbox Code Playgroud)

报告错误:

无法在变量声明中指定数组大小(尝试使用'new'表达式初始化)

即使我从教育网站复制和粘贴的基本数组示例报告同样的错误,我也不知道为什么.

Eri*_*ert 11

另一个答案表明你不能将这行代码放在类声明中但在方法体之外是正确的.我认为描述为什么你得到奇怪的错误信息可能会很有趣.编译器正在拼命试图弄清楚你的意思X[Y] = Z;,并假设你的意思是:

X[] F = Z;
Run Code Online (Sandbox Code Playgroud)

也就是说,您不小心将数组的大小放在数组声明中 - 这是最近学习过C#的C程序员中的一个非常常见的错误 - 并且省略了该字段的名称.

因此,编译器提供了它可以提供的最丰富的错误:您可能是一个C程序员,他忘记了数组的大小是在初始化程序中,而不是类型声明.

在这种情况下,猜测是完全错误的; 这里的错误是你不小心把声明放在了一个字段声明的地方.但大多数时候,这是一个合理的猜测.

  • @gdoron:当然,你需要做的就是编写一个像人一样聪明的编译器,并且你已经设置好了.此外,它需要能够在击键之间的时间内对损坏的代码进行正确的分析. (8认同)

gdo*_*ica 5

虽然您粘贴的代码有效,但您的问题是其他问题.
也许你在班级宣布它.

motionCam[1] = "Stop"; 是一个赋值而不是声明,这就是编译器喊叫的原因.

这个人的问题谁了,同样的问题.

底线是您不能在类级别拥有非声明语句.


isp*_*iro 5

你把它放在课堂上.(第二行)

把它放在一个方法中.

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