类构造函数中的简单编译错误
本文关键字:编译 错误 简单 构造函数 | 更新日期: 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___";