1

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

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

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

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

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

为什么 C#/CLR 不支持方法覆盖协/逆变?

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

4

1 回答 1

0

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

于 2010-12-16T18:08:09.490 回答