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

の代わりに定数値を使用する必要があります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 に答える