Это легко с C # 3 инициализаторами коллекции , которые все еще могут быть нацелены на .NET 2. Однако используя Dictionary<string, string>
вместо Hashtable
(не используйте неуниверсальный коллекции, если вам не нужно 1 ):
private static readonly Dictionary<string, string> Foo
= new Dictionary<string, string>
{
{ "Foo", "Bar" },
{ "Key", "Value" },
{ "Something", "Else" }
};
Нет ничего похожего в C # 2, если вам действительно нужно это использовать. Вы действительно все еще используете Visual Studio 2005? Не забывайте, что вы все еще можете нацелиться на .NET 2 с C # 3 и 4 ...
РЕДАКТИРОВАТЬ: Если вы действительно хотите сделать это с помощью C # 2 и хеш-таблиц, вы можете написать статический метод, подобный этому:
public static Hashtable CreateHashtable(params object[] keysAndValues)
{
if ((keysAndValues.Length % 2) != 0)
{
throw new ArgumentException("Must have an even number of keys/values");
}
Hashtable ret = new Hashtable();
for (int i = 0; i < keysAndValues.Length; i += 2)
{
ret[keysAndValues[i]] = keysAndValues[i + 1];
}
return ret;
}
Тогда:
private static readonly Hashtable Foo = HashtableHelper.CreateHashtable(
"key1", "value1", "key2", 10, "key3", 50);
Хотя я бы не советовал ...
1 Тот же синтаксис будет работать с Hashtable
, если вы используете C # 3, но это действительно, действительно стоит использовать универсальные коллекции, если это возможно.