簡體   English   中英

檢查是否設置了類屬性

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM