2015-02-13 3 views
0

Давайте предположим, что у меня есть класс пользователяПроверьте класс недвижимости установлен

public Class User 
{ 
    public string Name { get; set; } 
    public string Surname { get; set; } 
    public int Level {get;set;} 
} 


User user1 = new User(); 
user1.Name = "name"; 
user1.Surname = "Surname"; 
user1.Level = 0; 

User user2 = new User(); 
user2.Name = "name"; 
user2.Surname = "Surname"; 

Когда я проверяю user1.Level == user2.Level возвращает true, поскольку значение по умолчанию int является 0.

Итак, есть ли способ сделать это, я могу понять, что свойство уровня user2 не установлено, чтобы я мог сказать, что эти два не идентичны?

+0

Вы можете использовать 'int?', Но тогда вы, вероятно, лучше установили уровень 1 в качестве начального уровня по умолчанию. Ваш вопрос - это проблема XY. Чего вы пытаетесь достичь? – Sayse

+1

Вы можете установить значение по умолчанию (например) -1 в конструкторе – DavidG

ответ

1

1) Если вы используете Int? как тип для уровня, он будет NULL, если не установлен.

public Class User 
{ 
    public string Name { get; set; } 
    public string Surname { get; set; } 
    public int? Level {get;set;} 
} 

2) Вы можете использовать сеттер атрибута уровня и установить логическое значение, когда вы устанавливаете новое значение, если другое предложенное решение не хорошо для вас. Пример:

public Class User 
{ 
    public string Name { get; set; } 
    public string Surname { get; set; } 
    private int _Level; 
    public int Level 
    { 
     get { return _Level; } 
     set { _Level= value; _hasLevel = true; } 
    } 

    public bool HasLevel { get { return _hasLevel; } } 
} 
0

Использование Nullable

public Class User 
{ 
    public string Name { get; set; } 
    public string Surname { get; set; } 
    public int? Level {get;set;} 
} 

Он будет иметь по умолчанию значение NULL вместо значения 0.

больше о Nullable взгляд на msdn documentation

0

Вы можете изменить свой класс, чтобы сделать уровень нулевым.

public class User 
{ 
    public string Name { get; set; } 
    public string Surname { get; set; } 
    public int? Level {get;set;} 
} 
2

Другой вариант (в дополнение к другим предложили), чтобы установить значение, отличное от 0 в конструктор класса. Обычно используется -1.

public Class User 
{ 
    public User() 
    { 
     Level = -1; 
    } 

    public string Name { get; set; } 
    public string Surname { get; set; } 
    public int Level {get;set;} 
} 
Смежные вопросы