c # перегружает универсальные функции с различными ограничениями параметров - PullRequest
4 голосов
/ 28 февраля 2011

У меня есть следующие функции:

public static V AddIfNotPresent<K, V>( this Dictionary<K, V> store, K key ) where V : new()

public static V AddIfNotPresent<K, V>( this Dictionary<K, V> store, K key )

Прежде всего ... можно ли перегрузить функции таким образом?

Если перегрузка невозможна, могу ли я быть более конкретнымс моими функциями и инструментами скажем:

public static string Foo<K, string>( this Dictionary<K, string> store, K key )

Как небольшая история, у меня есть словарь со строковыми значениями, и я бы использовал последовательное расширение словаря 'Foo', чтобы позволить мне добавлять объекты new ()или пустая строка (в зависимости от ситуации).

1 Ответ

4 голосов
/ 28 февраля 2011

Нет, вы не можете перегружать ограничения типа параметров. Но да, вы можете перегружаться на количество параметров типа:

public static string Foo<TKey>(this Dictionary<TKey, string> store, TKey key)

(Обратите внимание, что string отсутствует в списке параметров универсального типа для Foo; это не сам параметр типа, он просто используется как тип аргумент для Dictionary.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...