Как я могу сделать не значащие типы обнуляемыми в C #? - PullRequest
3 голосов
/ 18 ноября 2010

Например:

public class Stereo {
   public Speaker? LeftSpeaker;
   public int? Volume;
}

int? работает нормально, но я не могу сделать динамик обнуляемым.Это оказалось удивительно сложно для Google, я думал, что это будет просто ...

Ответы [ 4 ]

13 голосов
/ 18 ноября 2010

Зачем тебе это?Типы без значений (то есть ссылочные типы) уже могут быть установлены и сравниваться с null.

Добавление оболочки Nullable<T> к объектам ссылочного типа создаст два слоя обнуляемости;бессмысленная сложность, следовательно, это не допускается.

2 голосов
/ 18 ноября 2010

Это просто.«не значащие» типы на самом деле называются ссылочными типами в .NET и автоматически обнуляются.Просто измените свой код таким образом:

public class Stereo {
   public Speaker LeftSpeaker; // ? removed for ref type
   public int? Volume;
}
0 голосов
/ 18 ноября 2010

Много рыбы уже здесь - но если вы хотите научиться ловить рыбу, я предлагаю заглянуть в книгу Джона Скита C # in Depth . Главы с 4.1 по 4.5 имеют дело со всеми аспектами «концепции ничтожности» в C #.

0 голосов
/ 18 ноября 2010

Дикая добыча:

public class Stereo { 
   public Speaker LeftSpeaker; 
   public int? Volume; 

   public Stereo() {
       LeftSpeaker = null;   // Mission accomplished.
   }
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...