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
相关产品推荐
相关产品推荐

