相同签名的两种方法上的互斥约束

9
所以这两种方法具有相同的签名,但不同的限制。
public static void Method<T>(ref T variable) where T : struct { }

public static void Method<T>(ref T variable) where T : class { }

但它们不能被定义在单个类中,因为它们具有相同的签名。但在这种特定情况下,它们是互斥的。(除非我对此有误)

我知道你可以在classstruct之外加入其他限制条件,但你不能在同一个方法上同时指定structclass。那么为什么编译会失败呢?


4
你自己说了,因为它们具有相同的特征 - user703016
你有解决方法吗?如果需要,我想到了一个。 - bluevector
4
约束条件不是签名的一部分。 - Anthony Pegram
@AnthonyPegram 谢谢,这是我不知道的事情。 - Buildstarted
@johnnyGold 不,我不需要解决方法,但这是我们在工作中遇到的一些有趣的事情,所以我想在这里问一下 :) - Buildstarted
@jonnyGold:我有这个问题,如果您能给我提到的解决方法就太棒了。 - Cyril Gandon
3个回答

10

@ClaudioRedi 这可能是好事或坏事...不过这个话题太大了,对于 Stack Overflow 来说。 - bluevector

4
它们在语义上是互斥的,但编译器将它们视为具有相同的“名称”,因此出现了歧义。这里的“名称”指的是“方法签名”。

@L.B中的“name”是“方法签名”的口语化说法,我应该更明确地表达,不使用手势缩写 :) - bluevector

4
尽管编译器可能足够聪明以解决这个问题(但似乎并不是这样),但您不知道该如何处理object(因为它既可以是class,也可以是struct)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接