2016-08-17 3 views
1

Ниже перечисление состоит из двух членов: Тест и производствоКак добавить и использовать значение null в Enum?

public enum OTA_HotelInvCountNotifRQTarget 
{  
    Test,  
    Production, 
} 

я ищу пути, чтобы добавить и использовать Null значение выше перечислении из кода, как:

inv.Target = OTA_HotelInvCountNotifRQTarget.Null; // Not allowed 

Обновление: Я не хочу добавлять дополнительные NULL в выше перечисление, я хочу сделать эту динамику, потому что выше перечисление автоматически генерируется. и должны оставаться такими же.

Есть ли способ достичь этого в самом методе, без создания каких-либо Class или добавления дополнительного значения Enum в перечисление? like: inv.Target = OTA_HotelInvCountNotifRQTarget.Null;

Как это сделать?

+0

'Enum' сериализации и представлены в виде числовой (по умолчанию' int'). Вы можете использовать несуществующее значение как признак недействительной записи, например. 'inv.Target = (MyEnum) -1;'. – Sinatr

ответ

3

Значения Подчеркивание в enum являются int, которые не могут быть отнесены к null.

Если вы все еще хотите сделать так:

  1. Добавить Null в качестве опции перечисления:

    public enum OTA_HotelInvCountNotifRQTarget 
    { 
        Null, 
        Test, 
        Production 
    } 
    
  2. Have ваш целевой обнуляемого тип:

    Nullable<OTA_HotelInvCountNotifRQTarget> t = null; 
    
    //Or in a cleaner way: 
    OTA_HotelInvCountNotifRQTarget? t = null; 
    
    //And in your class: 
    public class YourType 
    { 
        public OTA_HotelInvCountNotifRQTarget? Target { get; set; } 
    } 
    
+0

. Проверьте обновление. –

+0

вариант 2 выглядит хорошо, как я могу использовать это вместо строки: 'inv.Target = OTA_HotelInvCountNotifRQTarget.Null; ' –

+0

@RSH - поясните пожалуйста. Не понял –

0
public enum OTA_HotelInvCountNotifRQTarget 
{  
    Null, 
    Test,  
    Production 
} 

также answewred здесь How to set enum to null

+1

Закрыть, но вы, вероятно, хотите, чтобы Null был первой записью, поэтому она по умолчанию. – adv12

+0

@ adv12 хорошая точка – Neil

+0

Я хочу сделать это из кода, означает, откуда я использую эти перечисления .. Я не хочу добавлять дополнительное значение, то есть 'Null' в него –

0

Enum является enum. Это тип значения, и вы можете использовать Nullable<OTA_HotelInvCountNotifRQTarget> или OTA_HotelInvCountNotifRQTarget? для представления «не установлен» заявление

, но если вы все еще хотите пользователь null в качестве enum значения попробовать

public enum OTA_HotelInvCountNotifRQTarget 
{ 
    Null, 
    Test, 
    Production 
} 
0

Или с помощью «?» Оператор переменной:

public OTA_HotelInvCountNotifRQTarget? Target; 

Вы должны изменить задание:

inv.Target = null; 
Смежные вопросы