代码之家  ›  专栏  ›  技术社区  ›  Brian

C冗余委托

  •  0
  • Brian  · 技术社区  · 15 年前
    public delegate T GetObject<T>(SqlDataReader reader);
    public delegate KeyValuePair<TKey, TValue> GetObject<TKey, TValue>(SqlDataReader reader);
    

    是否有可能删除第二行(两行在连续的行上)以产生任何差异,无论是表面的还是非表面的?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Jon Skeet    15 年前

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

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

    您还应该注意反射使用它的情况。在您的情况下,这可能不是一个问题,但这是一种简单的方法,可以使中断的更改只在执行时可见,而不是被编译器捕获。

        2
  •  1
  •   JaredPar    15 年前

    会有什么不同吗?非常肯定。删除此委托定义将导致以前有效的代码是编译错误。

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