Довольно часто использую вывод типов чисто в декларативных целях. Представим ситуацию, когда требуется объявить массив пар (KeyValuePair<string, int>). Ситуация не частая, но на ее примере я покажу пару незатейливых приемов.
KeyValuePair<string, int>[] pairs = new KeyValuePair<string, int>[] {
new KeyValuePair<string, int>("A", 0),
new KeyValuePair<string, int>("B", 1)
};
Код довольно простой, но выглядит громоздко. Попробуем что-нибудь сделать с объявлением элементов массива: Введем вспомогательный метод MakePair:
static KeyValuePair<K, V> MakePair<K, V>(K key, V value)
{
return new KeyValuePair<K, V>(key, value);
}
С учетом введенного метода, объявление массива можно переписать следующим образом:
KeyValuePair<string, int>[] pairs = new KeyValuePair<string, int>[] {
MakePair("A", 0),
MakePair("B", 1)
};
Следующий метод позволит переложить ответственность за создание экземпляра массива на компилятор:
public static T[] MakeArray<T>(params T[] items)
{
return items;
}
Таким образом, вышеописанный пример превращается в прилично читаемый код:
KeyValuePair<string, int>[] pairs = MakeArray(
MakePair("A", 0),
MakePair("B", 1));
Код приведенных методов настолько прост, что может быть расположен прямо по месту использования. Однако, я предпочитаю объявлять такие вещи в классе Utils, либо Tools (как шарахнет сверху).
Комментариев нет:
Отправить комментарий