2015-09-30 2 views
1

Я хотел бы передать параметр Словаря методу.Ярлыки для слишком коротких типичных типов

public static void Method(Dictionary<string, string> hash) 

Я бы очень хотел, чтобы использовать коллекцию рядный Initializer

это не является законным

Method({{"Foo", "Bar"}, {"Bing", "Bong"}}) 

ни это

Method(new {{"Foo", "Bar"}, {"Bing", "Bong"}}) 

это

// outside the class  
using D = System.Collections.Generic.Dictionary<string, string>; 
// calling with the type alias 
Method(new D {{"Foo", "Bar"}, {"Bing", "Bong"}}) 

так это

// once in a library somewhere 
class SD : System.Collections.Generic.Dictionary<string, string> {} 
// calling with the class 
Method(new SD {{"Foo", "Bar"}, {"Bing", "Bong"}}) 

у вас есть хороший ярлык, как это я не знать о решении моей инициализации коллекции типа?

+1

Я предпочел бы быть ясно, чем лаконична (или хуже, имея используя операторы, которые работают как стенография) , в чем проблема с типизацией? –

+0

@ronBeyer Нет проблем с вводом текста. Просто спрашивайте, можно ли это сделать, не так ли? – JJS

+0

http://stackoverflow.com/questions/1815252/anonymous-collection-initializer-for-a-dictionary - это еще один способ, но его почти так же долго, как «новый словарь <строка, строка> {...}' , –

ответ

1

Нет, вы не можете объявить словарь так, как вам хочется. В C# 6, есть немного симпатичнее Dictionary синтаксис инициализации, но это не совсем то, что вы хотите:

using D = System.Collections.Generic.Dictionary<string, string>; 

//... 

Method(new D { ["Foo"] = "Bar", ["Bing"] = "Bong" }); 
Смежные вопросы