1. ホーム
  2. c#

[解決済み] 静的クラス内部で辞書を宣言する

2023-01-06 22:09:13

質問

静的クラス内で静的辞書オブジェクトを宣言する方法は?私は試してみました

public static class ErrorCode
{
    public const IDictionary<string, string> ErrorCodeDic = new Dictionary<string, string>()
    {
        { "1", "User name or password problem" }     
    };
}

しかし、コンパイラは " と文句を言う。 string 以外の参照型の const フィールドは null でしか初期化できません。 "と表示されます。

どのように解決するのですか?

一度宣言した辞書は二度と変更しないのであれば、readonlyと宣言してください。

private static readonly Dictionary<string, string> ErrorCodes
    = new Dictionary<string, string>
{
    { "1", "Error One" },
    { "2", "Error Two" }
};

辞書の項目を読み取り専用にしたい場合(参照だけでなく、コレクション内の項目も)、IDictionaryを実装した読み取り専用の辞書クラスを作成する必要があります。

参考までにReadOnlyCollectionをチェックしてみてください。

ちなみにconstはスカラー値をインラインで宣言するときのみ使用可能です。