问题 c#中有什么类似于java的@override注释吗?


我用过了 @覆盖 在java中已经相当方便。 c#中有类似的东西吗?


6397
2018-05-17 02:59


起源

我不知道, override 关键词? - BoltClock♦
好的,对不起,这是一个非常愚蠢的问题。我正在寻找一个注释,但找不到一个。忘了它是方法签名的一部分。 c#仍然有点新鲜。 - xecaps12
C#实际上有了 override 关键字第一。它被证明是有用的,他们将该功能添加为Java的注释。 - Gabe


答案:


C#编译器为方法覆盖提供编译时检查,包括检查方法是否实际覆盖了您的意图。您可以指示应使用.NET覆盖方法 override 关键词。


12
2018-05-17 03:02



没有.Net编译器。 (你的意思是C#) - SLaks
@SLaks:大声笑,我会在其中一次得到它:) - mellamokb


在C#中,您必须使用 override 要覆盖功能的关键字。

如果你使用 override 没有匹配 virtual 要么 abstract 基函数,你会得到一个编译器错误。

如果你不使用 override,并且有一个匹配的基本函数,您将收到编译器警告(除非您添加 new)。


4
2018-05-17 03:02





不,是的。因为在C#中,语言中有一个覆盖kkeyword,如果你“隐藏”一个方法,编译器就会发出警告。所以,要么直接说“新”或“覆盖”作为方法的一部分。

Java基本上使用注释来隐藏语言规范中的错误。

请阅读C#的语言规范。完全。


-3
2018-05-17 03:03



为什么这是一个错误?没有什么可以覆盖任何现代编译器无法自行解决的问题。我发现它从自我记录的角度来看非常有用,并且必须明确地声明我的意图使我能够跟踪事物。但是编译需要吗?不是真的。 - drharris
C#也没有“编译器”,但要明确。在没有警告的情况下覆盖是可能的错误情况。 Java犯了错误,默认情况下将所有内容都设置为虚拟并自动覆盖,并且它引入了大量可能的错误。 - TomTom
非常主观的意见。 - Marcelo
所以呢? ;)只有羊没有意见,他们被搞砸了。我个人认为如果你想要一个弱类型的语言,那就去买一个。否则......这是一个弱点。 - TomTom