public delegate T GetObject<T>(SqlDataReader reader);
public delegate KeyValuePair<TKey, TValue> GetObject<TKey, TValue>(SqlDataReader reader);
是否有可能删除第二行(两条线在连续的行上),以便产生任何差异,表面与否?
答案 0 :(得分:1)
绝对 - 例如,试图声明类型GetObject<string,string>
的值的任何内容都将无法编译。
现在,你当然可以用GetObject<TKey,TValue>
替换GetObject<KeyValuePair<TKey,TValue>>
的任何使用(如果你明白我的意思),但你不能只删除第二行。< / p>
您还应该注意反射使用它的情况。在你的情况下它可能不是一个问题,但它是一个简单的方法,只有在执行时才可见,而不是被编译器选中。
答案 1 :(得分:1)
能否有所作为。明确地。删除此委托定义将导致以前有效的代码成为编译错误。
var x = new GetObject<int,String>(SomeFunction);