KeyValuePairリテラル

static な可変長引数のインデクサから更に妄想して、KeyValuePairリテラルとか考えてみた。

KeyValuePair<int, int> pair1 = 10:10;
KeyValuePair<int, KeyValuePair<int, int>> pair2 = 10:20:30;

さらに、

(int:int) pair1 = 10:10;
(int:int:int) pair2 = 10:20:30;

とか。
static な可変長引数のインデクサと合わせると、

public class Dict<TKey, TValue> : ...
{
    public static Dict<TK, TV> this<TK, TV>[params (TK:TV)[] args]
    {
        get
        {
            Dict<TK, TV> d = new Dict<TK, TV>(args.Length);
            foreach (KeyValuePair<TK, TV> p in args)
            {
                d.Add(p.Key, p.Value);
            }
            return d;
        }
    }
}
Dict<int, int> d = Dict[1:10, 2:20, 3:30];

みたいな!!