检查是否设置了class属性
Check if class property has been set
假设我有一个用户 class
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
时,它 returns true
因为默认 int
值为 0
。
那么有什么办法可以让我理解 user2
的级别 属性 没有设置,所以我可以说这两个不相同?
使用Nullable
public Class User
{
public string Name { get; set; }
public string Surname { get; set; }
public int? Level {get;set;}
}
它的默认值为 null 而不是值 0。
有关 Nullable
的更多信息,请查看 msdn documentation
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; } }
}
您可以更改 class 以使级别可为空。
public class User
{
public string Name { get; set; }
public string Surname { get; set; }
public int? Level {get;set;}
}
另一个选项(除了建议的其他选项之外)是在 class 构造函数中将值设置为 0
以外的值。通常使用 -1
。
public Class User
{
public User()
{
Level = -1;
}
public string Name { get; set; }
public string Surname { get; set; }
public int Level {get;set;}
}
假设我有一个用户 class
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
时,它 returns true
因为默认 int
值为 0
。
那么有什么办法可以让我理解 user2
的级别 属性 没有设置,所以我可以说这两个不相同?
使用Nullable
public Class User
{
public string Name { get; set; }
public string Surname { get; set; }
public int? Level {get;set;}
}
它的默认值为 null 而不是值 0。
有关 Nullable
的更多信息,请查看 msdn documentation
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; } }
}
您可以更改 class 以使级别可为空。
public class User
{
public string Name { get; set; }
public string Surname { get; set; }
public int? Level {get;set;}
}
另一个选项(除了建议的其他选项之外)是在 class 构造函数中将值设置为 0
以外的值。通常使用 -1
。
public Class User
{
public User()
{
Level = -1;
}
public string Name { get; set; }
public string Surname { get; set; }
public int Level {get;set;}
}