[英]Check if class property has been set
假設我有一個User類
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
Level屬性,以便可以說這兩個不相同?
1)如果使用int? 作為Level的類型,未設置時將為NULL。
public Class User
{
public string Name { get; set; }
public string Surname { get; set; }
public int? Level {get;set;}
}
2)如果其他提議的解決方案對您不利,則可以在設置新值時使用level屬性的setter並設置布爾值。 例:
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
的值。 通常使用-1
。
public Class User
{
public User()
{
Level = -1;
}
public string Name { get; set; }
public string Surname { get; set; }
public int Level {get;set;}
}
使用Nullable
public Class User
{
public string Name { get; set; }
public string Surname { get; set; }
public int? Level {get;set;}
}
默認情況下,它將具有null而不是0。
有關Nullable
更多信息,請參閱msdn文檔
您可以更改類以使Level為可為空。
public class User
{
public string Name { get; set; }
public string Surname { get; set; }
public int? Level {get;set;}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.