ごめんなさいネタです。
C#でも各種LLやF#にあるみたいな辞書リテラルがほしい!
ってことで、リテラルじゃないけどこんなのはどうか。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
class Make
{
public static Dictionary<string, T> Dict<T>(params Expression<Func<string, T>> []items)
{
return items.ToDictionary(
e => e.Parameters[0].Name,
e => e.Compile()(null));
}
}
メリット
- 超自然に書ける。
var dict = Make.Dict(a => 1, b => 2);
デメリット
- キーは文字列固定。かつ変数名として有効な文字列しか使えない
- (多分)とても遅い
まあたかが辞書の生成でこんなことしてたら見あわないですよね。
もしかすると Pythonの**kwargs 的な用途で使えるシチュエーションはあるかもだけど。