Есть ли в c # что-то похожее на аннотацию @override в java? - PullRequest
13 голосов
/ 17 мая 2011

Я использовал @ Override в Java и очень пригодился. Есть ли что-нибудь подобное в c #?

Ответы [ 4 ]

12 голосов
/ 17 мая 2011

Компилятор C # обеспечивает проверку во время компиляции переопределений методов, включая проверку, действительно ли метод переопределяет, как вы предполагали.Вы можете указать, что метод должен быть переопределен с помощью ключевого слова .NET override.

4 голосов
/ 17 мая 2011

В C # вы должны использовать ключевое слово override для переопределения функций.

Если вы используете override без соответствующей базовой функции virtual или abstract, вы получите ошибку компилятора.

Если вы не используете override, и есть соответствующая базовая функция, вы получите предупреждение компилятора (если вы не добавите new).

0 голосов
/ 15 декабря 2018

В CSharp значение ключевого слова override полностью отличается от мира Java. Эквивалентом в Csharp World является явная реализация, но у него есть недостаток .

interface IShape
{
     void Display();
}

class Square : IShape
{
     void IShape.Display()
     {

     }
}
0 голосов
/ 17 мая 2011

Нет, да.Он не должен иметь аннотации, потому что в C # в языке имеется переопределенное ключевое слово, и компилятор требует, чтобы вы «скрыли» метод.Таким образом, либо вы говорите «new», либо «override» непосредственно как часть метода.

Java в основном использует аннотацию, чтобы скрыть ошибку в спецификациях языка.

Пожалуйста, прочтите спецификацию языкадля C #.Полностью.

...