让我们假设我有一个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属性没有设置,所以我可以说这两个不相同?
答案 0 :(得分:2)
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; } }
}
答案 1 :(得分: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;}
}
答案 2 :(得分: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
答案 3 :(得分:0)
您可以更改您的课程以使等级可以为空。
public class User
{
public string Name { get; set; }
public string Surname { get; set; }
public int? Level {get;set;}
}