Literal hashes in c#?
If you're using C# 3.0 (.NET 3.5) then you can use collection initializers. They're not quite as terse as in Ruby but still an improvement.
This example is based on the MSDN Example
var students = new Dictionary<int, StudentName>(){ { 111, new StudentName {FirstName="Sachin", LastName="Karnik", ID=211}}, { 112, new StudentName {FirstName="Dina", LastName="Salimzianova", ID=317, }}, { 113, new StudentName {FirstName="Andy", LastName="Ruth", ID=198, }}};
When I'm not able to use C# 3.0, I use a helper function that translates a set of parameters into a dictionary.
public IDictionary<KeyType, ValueType> Dict<KeyType, ValueType>(params object[] data){ Dictionary<KeyType, ValueType> dict = new Dictionary<KeyType, ValueType>((data == null ? 0 :data.Length / 2)); if (data == null || data.Length == 0) return dict; KeyType key = default(KeyType); ValueType value = default(ValueType); for (int i = 0; i < data.Length; i++) { if (i % 2 == 0) key = (KeyType) data[i]; else { value = (ValueType) data[i]; dict.Add(key, value); } } return dict;}
Use like this:
IDictionary<string,object> myDictionary = Dict<string,object>( "foo", 50, "bar", 100);