2012-06-11 64 views
0

我有一個非常簡單的類,不會編譯,因爲在構造函數中的默認參數。該語言是C#,該類將用於Unity3d遊戲中。所以這個編譯錯誤是發生在統一的 「IDE」簡單的編譯錯誤在類的構造函數

編譯錯誤:

Assets/Utilities/GenericClasses.cs(30,94): error CS1736: The expression being assigned to optional parameter `nName' must be a constant or default value

public class Element { 
    public static readonly string NULL_NAME = "___NULL_NAME___"; 
    public enum elementType {E_ELEMENT, E_MODEL, E_VIEW, E_SUPER, E_ARC}; 
    private string name; 
    private elementType type; 

    // line 30 is below 
    public Element(elementType nType=elementType.E_ELEMENT, string nName=NULL_NAME) { 
     type = nType; 
     name = nName; 
    } 
} 

我在做什麼錯?

回答

1

你應該用一個恆定值,而不是static readonly

public const string NULL_NAME = "___NULL_NAME___"; 

之所以你的代碼無法編譯是因爲你試圖在構造函數中的非恆定的缺省值分配給nName參數,不受支持。

0

試試這個

public const string NULL_NAME = "___NULL_NAME___"; 
1

NULL_NAME不是一個常量,它是隻讀的。

只讀變量可以在構造函數中初始化,所以它在編譯時並不知道,這對於可選參數的缺省值是必需的,因爲編譯器會替換調用中被忽略的值。

相關問題