【问题标题】:Type signature variance in C#, with respect to overridesC# 中的类型签名差异,关于覆盖
【发布时间】:2010-12-10 07:51:30
【问题描述】:

这次关于方差的问题略有不同。

我从实验中得知 C# 不允许您用逆变函数覆盖虚函数?如果是这样,你怎么做,因为我不断收到“找不到合适的方法重载”。如果不是,为什么不呢?如果基类规定in的值永远是int,而子类可以取对象,问题出在哪里?

与返回类型相同,在它们的覆盖签名中应该是协变的

哪些语言允许您这样做? (C++/Java 我在看你)如果他们让你使用,variance 是什么类型? (返回类型/参数列表等)

你能有多个覆盖吗?只要签名在技术上是独一无二的,我不明白为什么不这样做。

Why does C#/CLR not support method override co/contra-variance?

我读了这篇文章,但我没有看到任何问题的答案。我知道通用方差,而且我知道它很棒。我想了解方法签名差异,不仅在 C# 中,而且在 C# 中(即包括但不限于)。如果它不存在,我想对此进行确认和解释(它是一个实现细节吗?我的类型理论错了吗?只是 CLR/C# 碰巧不支持这个特定功能吗?是我没有的东西吗?没想到因为不用处理CLR的实现,所以不知道具体的复杂细节?)

【问题讨论】:

    标签: overriding resolution variance type-signature


    【解决方案1】:

    找到答案,C# 规范中的第 10.6.4 节规定覆盖必须具有相同的签名

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-09
      • 1970-01-01
      相关资源
      最近更新 更多