Pages

2016/08/15

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);

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

Related Posts Plugin for WordPress, Blogger...