[英]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.