C#数组是一个字段,但与类型一样使用
可能重复:C#数组是一个字段,但与类型一样使用,c#,arrays,string,variables,C#,Arrays,String,Variables,可能重复: 正如您可能从标题中猜到的,我是否遇到了以下错误: Invasion_server.variables.resources is a field but is used like a type 给出该错误的代码是: class variables { .... public static string[] resources = new string[30]; resources[0] = "cities_wood"; .... } 谁能告诉我是什
正如您可能从标题中猜到的,我是否遇到了以下错误:
Invasion_server.variables.resources is a field but is used like a type
给出该错误的代码是:
class variables
{
....
public static string[] resources = new string[30];
resources[0] = "cities_wood";
....
}
谁能告诉我是什么导致了这个问题,因为在代码的其他地方它正在工作…你应该用某种方法来做这件事试试这个:
class variables
{
public static string[] resources = new string[30];
static void doSomething() {
resources[0] = "cities_wood";
}
}
您没有在类构造函数或方法中分配变量。您不能这样做
resources[0] = "cities_wood";
在您的类定义中。在静态构造函数中或使用列表初始值设定项进行初始化。必须初始化方法或构造函数中的字段或声明中的所有字段,如
class variables
{
public static string[] resources = new string[30];
public variables()
{
resources[0] = "cities_wood";
}
}
或
这是因为您试图对类主体中的变量而不是方法中的变量执行操作。在你的班级里,你应该只有几样东西:
int myField=0代码>
public void myMethod(){}
publicmyclass(){}
后面的第一个单词时
(意思是它是新代码行的第一个单词),它希望看到一个标识符,如public
,static
,等等,或者一个类型,如int
。因为它不是一个标识符,所以它查找一个类型,因为它不是一个类型,所以您得到了错误
希望这能很好地解释它。如果您想在构造函数或方法体之外初始化数组的成员,则需要使用初始化器语法和声明:
class variables
{
public static string[] resources = new string[30]
{
"item one",
"item two",
...
}
}
这样做的缺点是需要填充所有30个值。如果您希望只填充第一个,那么您需要在构造函数或方法体中这样做。可以考虑一个静态构造函数,它在声明时具有与初始化相同的净效果;静态构造函数在第一次访问类的成员时运行。例如:
class variables
{
public static string[] resources;
static variables()
{
resources = new string[30];
resources[0] = "item one";
}
}
您能从非静态函数获取静态变量吗?@StackUser是非静态可以看到静态,但静态无法看到nonstatic@StackUser谢谢你的回答。她打字很快
class variables
{
public static string[] resources;
static variables()
{
resources = new string[30];
resources[0] = "item one";
}
}