【问题标题】:Simple compile error in class constructor类构造函数中的简单编译错误
【发布时间】:2012-06-11 06:02:56
【问题描述】:

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

我做错了什么?

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

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

    public const string NULL_NAME = "___NULL_NAME___";
    

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        试试这个

        public const string NULL_NAME = "___NULL_NAME___";
        

        【讨论】:

          猜你喜欢
          • 2015-03-12
          • 1970-01-01
          • 1970-01-01
          • 2019-08-15
          • 2016-12-23
          • 2015-06-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多