C # @ в перечислении сгенерированных классов из XSD - PullRequest
3 голосов
/ 29 августа 2011

Используя xsd.exe, у меня есть enum, в котором есть символ @ перед одним из элементов. Я не могу понять, почему, и я не могу понять, для чего это нужно или что это значит. Поиск в Google символа не очень продуктивен.

Оригинальный XSD-фрагмент:

  <xs:simpleType name="stopLocation">
    <xs:restriction base="xs:string">
      <xs:enumeration value="default"/>
      <xs:enumeration value="near"/>
      <xs:enumeration value="far"/>
      <xs:enumeration value="nearExact"/>
      <xs:enumeration value="farExact"/>
    </xs:restriction>
  </xs:simpleType>

Сгенерированный фрагмент класса:

public enum stopLocation {
    @default,
    near,
    far,
    nearExact,
    farExact,
}

(Да, последний элемент имеет запятую, которой VS кажется довольным)

Спасибо.

Ответы [ 4 ]

5 голосов
/ 29 августа 2011

Экранирует ключевое слово default из C #.

См. Этот вопрос: Каково использование / значение символа @ в именах переменных в C #?

1 голос
/ 29 августа 2011

по умолчанию - это ключевое слово C #.

Символ @ используется как способ избежать ключевых слов языка, чтобы их можно было использовать в качестве имен переменных и других идентификаторов.

1 голос
/ 29 августа 2011

Это происходит потому, что имя значения enum (по умолчанию) является зарезервированным словом. В C # зарезервированные слова должны быть добавлены с @, чтобы компилятор знал, как их интерпретировать.

Вы можете увидеть то же поведение с таким именем, как 'event' или 'public'.

0 голосов
/ 29 августа 2011

http://dotnetdud.blogspot.com/2008/12/how-to-use-reserved-words-in-net-c.html

Синтаксис "@" позволяет использовать зарезервированное слово языка в качестве имени переменной / члена.Я бы посчитал это плохой практикой в ​​большинстве случаев.

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