Можете ли вы определить, было ли задано значение по умолчанию для поля C #? - PullRequest
7 голосов
/ 07 ноября 2008

Скажем, у вас есть объявление класса, например ::1001


class MyClass
{
  int myInt=7;
  int myOtherInt;
}

Теперь, есть ли способ в общем коде, использующий отражение (или любые другие средства, в этом отношении), что я могу сделать вывод, что myInt имеет назначенное значение по умолчанию, тогда как myOtherInt нет? Обратите внимание на разницу между инициализацией с явным значением по умолчанию и оставлением его неявным значением по умолчанию (myOtherInt по умолчанию будет инициализировано 0).

Судя по моим собственным исследованиям, сделать это невозможно, но я решил спросить здесь, прежде чем сдаться.

[Изменить]

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

Ответы [ 12 ]

0 голосов
/ 07 ноября 2008

Помогает ли следующее:

bool isAssigned = (myOtherInt == default(int));
0 голосов
/ 07 ноября 2008

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

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