C#冗余代表

时间:2009-02-05 16:07:55

标签: c# delegates

public delegate T GetObject<T>(SqlDataReader reader);
public delegate KeyValuePair<TKey, TValue> GetObject<TKey, TValue>(SqlDataReader reader);

是否有可能删除第二行(两条线在连续的行上),以便产生任何差异,表面与否?

2 个答案:

答案 0 :(得分:1)

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

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

您还应该注意反射使用它的情况。在你的情况下它可能不是一个问题,但它是一个简单的方法,只有在执行时才可见,而不是被编译器选中。

答案 1 :(得分:1)

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

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