You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#新手数组赋值报错:当前上下文中不存在数组名求助

解决C#数组赋值时“当前上下文中不存在数组名”的错误

嘿,作为C#新手碰到这个问题太正常了!我来给你把问题拆明白,再告诉你怎么搞定它~

你遇到的编译错误,核心原因是:在C#类的直接作用域里,不能直接写赋值这类可执行语句。你现在把randomNames[0]="Savresh";直接放在类的字段定义下面,这不符合C#的语法规则——这类修改数组元素的操作,必须放在构造函数、普通方法或者其他可执行代码块里才行。

为啥会报错?

在C#中,类的成员(比如你定义的randomNames数组)可以在声明时直接初始化(像string[] randomNames = new string[10];这种写法是完全合法的),但如果要修改数组里的具体元素,这属于“执行代码”,必须放在一个能被调用执行的上下文里,而类的根级别只能放成员声明,不能放执行语句。

两种快速修正方案

方案1:用构造函数完成赋值

给你的Calculator类加一个构造函数,把数组赋值的操作移到构造函数里——构造函数是创建类对象时自动执行的代码块,刚好适合做这类初始化操作:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

public class Calculator {
    int sum;
    int[] EvenArray;
    List<int> evenNumbers = new List<int>();
    string[] randomNames = new string[10];

    // 新增构造函数
    public Calculator()
    {
        // 在这里给数组元素赋值就没问题啦
        randomNames[0] = "Savresh";
    }
}

方案2:声明数组时直接初始化元素

如果你想在声明数组的同时就给元素赋值,可以直接在初始化数组的时候指定元素内容,这样也能避免报错:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

public class Calculator {
    int sum;
    int[] EvenArray;
    List<int> evenNumbers = new List<int>();
    // 声明时直接初始化数组的第一个元素,剩下的位置会默认填充null
    string[] randomNames = new string[10] { "Savresh" };
    // 也可以省略长度,让编译器自动推断:
    // string[] randomNames = new string[] { "Savresh" };
}

额外小提示

如果之后你需要在程序运行过程中修改数组元素,还可以把赋值操作放在一个普通方法里,比如:

public void SetFirstRandomName()
{
    randomNames[0] = "Savresh";
}

之后只要创建Calculator的对象,调用这个方法就能完成赋值啦。

内容的提问来源于stack exchange,提问作者user3899906

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:18:07