检查类属性是否已设置

brt*_*rtb 5 c# getter setter equality

假设我有一个 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";
Run Code Online (Sandbox Code Playgroud)

当我检查user1.Level == user2.Level它返回时,true因为默认int值是0.

那么有什么方法可以让我理解 Level 属性user2未设置,以便我可以说这两个不相同?

Pie*_*rto 6

  1. 如果使用int?as 类型Level,则未设置时将为 NULL。
public class User
{
    public string Name { get; set; }
    public string Surname { get; set; }
    public int? Level { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
  1. Level如果其他建议的解决方案不适合您,您可以使用属性的设置器并在设置新值时设置布尔值。例子:
public class User
{
    public string Name { get; set; }
    public string Surname { get; set; }
    private int _Level;
    private bool _hasLevel;
    public int Level
    { 
        get { return _Level; } 
        set { _Level= value; _hasLevel = true; } 
    }

    public bool HasLevel { get { return _hasLevel; } }
}
Run Code Online (Sandbox Code Playgroud)