Можем ли мы иметь переменные-члены в интерфейсе? - PullRequest
1 голос
/ 20 августа 2010

Я где-то читал, что интерфейсы могут иметь переменные-члены.

Только статические конечные константы, можно использовать их без квалификации в классах которые реализуют интерфейс. На другая лапа, эти неквалифицированные имена загрязняют пространство имен. Ты можешь использовать их и не очевидно, где они приходят с тех пор квалификация необязательна.

Я не совсем понял, что они имели в виду? Любая помощь?

Ответы [ 3 ]

5 голосов
/ 20 августа 2010

То, что вы читаете, неверно. Интерфейсы не могут иметь переменных-членов.

В VB.Net единственными допустимыми определениями внутри интерфейса являются

  • Свойства
  • Методы
  • События
  • Определения типов (недопустимо в C #)

Я не совсем уверен, на что ссылается вышеприведенный абзац. Основываясь на тексте, он звучит так, будто ссылается на Java. Фраза static и final чаще всего ассоциируется с Java-кодом, а не .Net (static и readonly).

Не могли бы вы дать нам больше контекста?

1 голос
/ 20 августа 2010

Если вы определяете такую ​​константу внутри класса MyClass:

public static final int MY_CONSTANT = 1;

, вы можете ссылаться на нее из других классов как MyClass.MY_CONSTANT с использованием квалификатора MyClass .Это указывает на местоположение определения константы.

Если вы определяете такую ​​константу в интерфейсе MyInterface , вы все равно можете обратиться к ней, используя MyInterface.MY_CONSTANT .Однако в классах, реализующих MyInsterface , вы можете просто использовать MY_CONSTANT без префикса " MyInterface ".

Это может выглядеть удобно (меньше нажатий клавиш), но может привести к путанице, потому что без квалификатора (префикса) неясно, где константа была первоначально определена.

0 голосов
/ 20 августа 2010

Добавление переменных-членов в интерфейсы приведет к появлению MI через заднюю дверь.

Не доступно в .NET, извините.

Хотелось бы, чтобы оно было там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...