0

我有一个非常简单的类,由于构造函数中的默认参数而无法编译。语言为 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;
    }
}

我究竟做错了什么?

4

3 回答 3

1

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

public const string NULL_NAME = "___NULL_NAME___";

您的代码无法编译的原因是您试图nName为不支持的构造函数中的参数分配一个非常量的默认值。

于 2012-06-11T06:05:10.830 回答
1

NULL_NAME 不是常量,它是只读的。

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

于 2012-06-11T06:07:19.520 回答
0

试试这个

public const string NULL_NAME = "___NULL_NAME___";
于 2012-06-11T06:05:31.767 回答