2012-08-15 20 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

相關問題