类构造函数中的简单编译错误

时间:2012-06-11 06:02:57

标签: c# unity3d

我有一个非常简单的类,由于构造函数中的默认参数而无法编译。语言是C#,该类将用于Unity3d游戏。所以这个编译错误发生在Unity的“IDE”

编译错误:

  

Assets / Utilities / GenericClasses.cs(30,94):错误CS1736:分配给可选参数`nName'的表达式必须是常量或默认值

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

我做错了什么?

3 个答案:

答案 0 :(得分:1)

您应该使用常量值而不是static readonly

public const string NULL_NAME = "___NULL_NAME___";

您的代码无法编译的原因是您尝试将非常量默认值分配给构造函数中不受支持的nName参数。

答案 1 :(得分:1)

NULL_NAME不是常量,只是readonly。

readonly变量可以在构造函数中初始化,因此在编译时不知道可选参数的默认值是否需要,因为编译器将替换调用中省略它的值。

答案 2 :(得分:0)

试试这个

public const string NULL_NAME = "___NULL_NAME___";