C # избыточный делегат - PullRequest
       4

C # избыточный делегат

0 голосов
/ 05 февраля 2009
public delegate T GetObject<T>(SqlDataReader reader);
public delegate KeyValuePair<TKey, TValue> GetObject<TKey, TValue>(SqlDataReader reader);

Можно ли удалить эту 2-ю строку (две строки на последовательных строках), чтобы вообще что-то изменить, поверхностное или нет?

Ответы [ 2 ]

1 голос
/ 05 февраля 2009

Может ли это иметь значение. Вероятнее всего. Удаление этого определения делегата приведет к тому, что ранее действительный код станет ошибкой компиляции.

var x = new GetObject<int,String>(SomeFunction);
1 голос
/ 05 февраля 2009

Абсолютно - все, что пытается объявить значение типа GetObject<string,string>, не будет компилироваться, например.

Теперь вы, безусловно, можете заменить любое использование из GetObject<TKey,TValue> на GetObject<KeyValuePair<TKey,TValue>> (если вы понимаете, о чем я), но вы не можете просто удалить вторую строку.

Вы также должны быть осторожны со случаем, когда это используется отражением. Это может не быть проблемой в вашем случае, но это простой способ, чтобы критическое изменение было видно только во время выполнения, а не было обнаружено компилятором.

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