メソッドの入力を極限まで短くすることに固執するなら、私は Ethan Brown と同じ方針に沿って考えていました。params
これは、辞書要素の入力に使用する小さなプログラムです。
class Program
{
static void Main(string[] args)
{
MyMethod("Key1", 1, "Key2", 2, "Key3", 3);
}
static void MyMethod(params object[] alternatingKeysValues)
{
var dictionary = AlternatingKeysValuesToDictionary(alternatingKeysValues);
// etc...
}
static Dictionary<string, object> AlternatingKeysValuesToDictionary(params object[] alternatingKeysValues)
{
if (alternatingKeysValues.Count() % 2 == 1)
throw new ArgumentException("AlternatingKeysValues must contain an even number of items.");
return Enumerable
.Range(1, alternatingKeysValues.Count() / 2)
.ToDictionary(
i => (string)alternatingKeysValues.ElementAt(i * 2 - 2),
i => alternatingKeysValues.ElementAt(i));
}
}
そうは言っても、エリックの答えのようなものが実際には優れていると思います。非常に冗長なものにショートカットを割り当てると、明確性や組み込みのコレクション初期化子Dictionary<object, string>
によって提供される自然なエラー チェックを犠牲にすることなく、理想にかなり近づけることができます。Dictionary
ただし、もう少し明確な表現を使用します。
using Dict = System.Collections.Generic.Dictionary<string, object>;
使用法:
MyMethod(new Dict {{string1, value1},{string2, value2}});
さらに良いことに、キーがで値が のDict
場合、たとえば fruitPrices のように、辞書の内容を実際に説明するものに置き換えます。FruitName
Price