2009-02-05 102 views
0
public delegate T GetObject<T>(SqlDataReader reader); 
public delegate KeyValuePair<TKey, TValue> GetObject<TKey, TValue>(SqlDataReader reader); 

是否有可能删除第二行(两行在连续的行中),以至于在所有方面有所改变,是否表面化?C#冗余代表

回答

1

绝对 - 例如,试图声明GetObject<string,string>类型值的任何内容都将无法编译。现在

,你当然可以取代GetObject<TKey,TValue>任何使用GetObject<KeyValuePair<TKey,TValue>>(如果你明白我的意思),但你不能只是删除第二行。

您还应该注意反射使用的情况。在你的情况下,这可能不是问题,但它是一个简单的方法,可以在执行时看到变化,而不是被编译器拾取。

1

它可以有所作为。明确地。删除此委托定义将导致以前有效的代码成为编译错误。

var x = new GetObject<int,String>(SomeFunction);