C#のDictionaryはキーにnullが入らない

C#のDictionary型
C# の Dictionary のキーには、null を入れられませんよね。

値を Null にすることはできません


キー自体には、NULL 許容型を指定することができます。しかし、以下のように書くと実行時にエラーとなります。
コンパイル時にエラーとなってくれればいいんですけどね…。

var dic = new Dictionary<int?, string>();
dic.Add(null, "hoge");

そもそも、連想配列なので、キーが null って何よ? ということなのは理解できます。

でも、ちょっとしたデータなんかをキーと値でペアにして持たせたいこともよくあります。場合によっては(使うことが許容されているチームなら)、Tuple を List に詰めて使います。

var dic2 = new List<Tuple<int?, string>>
{
 Tuple.Create<int?,string>(0, "ほげ"),
 Tuple.Create<int?,string>(1, "ほげほげ"),
 Tuple.Create(default(int?), "ぬる"),
};

これにすると何がいいかというと、並び替えが簡単です。

// null が先頭に来ますけどねw
orderbyDic2 = dic2.OrderBy(x => x.Item1);

スコープが短くて、ちょっと使いたい時には便利だと思っています。

このブログの人気の投稿

コピーした行の挿入が表示されない時はフィルタされていないかチェック

Excel で一部の図形だけ固定する