2012-08-15 71 views
-2

Possible Duplicate:
(object) is a 'field' but is used like a 'type'C#数组是一个领域,但在使用像一个类型

正如你可能从标题我收到这个错误已经猜到了:

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"; 
    .... 
} 

有人能告诉我是什么原因造成的问题,因为其他地方的代码,它正在...

回答

3

如果你想在阵列成员初始化构造函数或方法体之外,你需要做的所以使用初始化语法与声明:

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"; 
    } 
} 
+0

非常感谢。 – Dirk 2012-08-15 18:58:14

4

你应该在一些方法

+0

非常感谢你:) – Dirk 2012-08-15 18:25:12

3

做到这一点试试这个:

class variables 
{ 
    public static string[] resources = new string[30]; 

    static void doSomething() { 
     resources[0] = "cities_wood"; 
    } 
} 

你没有指定一个类的构造函数或方法中的变量。

+1

你可以从非静态函数中获得静态变量吗? – 2012-08-15 18:25:25

+1

非常感谢:) – Dirk 2012-08-15 18:25:41

+0

@StackUser是非静态可以看到静态,但静态看不到非静态 – 2012-08-15 18:29:02

1

类定义中,你不能这样做

resources[0] = "cities_wood"; 

。在静态构造器中使用它或使用列表初始化器。

+1

非常感谢:) – Dirk 2012-08-15 18:26:22

1

您必须初始化在声明中的方法或构造函数或所有的领域,如

class variables 

    { 
     public static string[] resources = new string[30]; 

     public variables() 
     { 
      resources[0] = "cities_wood"; 
     } 
    } 

OR

public static string[] resources = {"cities_wood", "....", "more stuff", "and more stuff"};//Your 30 or les or more variables separated by a comma 
+0

非常感谢:) – Dirk 2012-08-15 18:27:09

2

这是因为你试图做的一个变量操作类体,而不是一种方法。您应该只有几件事情在你的类主体:

  1. 领域:int myField = 0;
  2. 方法:public void myMethod(){ }
  3. 构造函数/析构函数(只是一种特殊类型的方法):public MyClass(){}

所以当编译器在;之后发现任何第一个单词(意思是它是新代码行的第一个单词)时,它预计会看到publicstatic,或者Type,如int。由于它不是一个标识符,它寻找一个类型,并且因为它不是一个类型,所以你得到了错误。

希望能解释得很好。

+0

非常感谢:) – Dirk 2012-08-15 18:30:05

相关问题