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

本文关键字:编译 错误 简单 构造函数 | 更新日期: 2023-09-27 18:36:41

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

编译错误:

资产/实用程序/泛型类.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;
    }
}

我做错了什么?

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

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

public const string NULL_NAME = "___NULL_NAME___";

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

NULL_NAME不是

常量,它是只读的。

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

试试这个

public const string NULL_NAME = "___NULL_NAME___";