簡體   English   中英

空值檢查

[英]null value checking

  public string AgentVersion
  {
    get { return m_version; }
  } // property: Enabled
  private string m_version = null;

我在構造函數中執行的以下聲明編碼

  string keySpoPath = SpoRegistry.SpoAgentRoot;
  RegistryKey regkey = Registry.LocalMachine.OpenSubKey(keySpoPath);
  m_version = (string)regkey.GetValue(SpoRegistry.regValue_CurrentVersion);

這是我的疑問


  1. 我是否需要private string m_version = null; 在這種情況下的財產申報? 如果我刪除那一個,有沒有問題?

  2. 如果AgentVersionnull或未獲得任何值或非數字值的任何字符串,我想將AgentVersion分配為值'0.0.0.0',否則我將顯示即將出現的數字值。 下面的代碼是否足夠在這里string.IsNullOrEmpty(AgentVersion) ? "0.0.0.0" : AgentVersion; string.IsNullOrEmpty(AgentVersion) ? "0.0.0.0" : AgentVersion; 如果可以,那么在哪里以及如何在“屬性”中實施

  1. 由於m_version的值始終在構造函數中分配,因此無需將其設置為null
  2. get { return string.IsNullOrEmpty(m_version) ? "0.0.0.0" : m_version; }
  1. 您可以使用Resharper,它將向您顯示您有多余的聲明。 在這種情況下,這是多余的。

  2. 如果String.Empty是有效值,則可以使用

    public string AgentVersion { get { return m_version ?? "0.0.0.0"; } }

否則,您正確使用String.IsNullOrEmpty

public string AgentVersion
{
    get { return String.IsNullOrEmpty(m_version) ? "0.0.0.0":m_version; }
}

您可以使用此代碼。


public string AgentVersion 
 {
    get
    { 
        if(string.isNullOrEmpty(m_version))
        {
            string keySpoPath = SpoRegistry.SpoAgentRoot;
            RegistryKey regkey = Registry.LocalMachine.OpenSubKey(keySpoPath);
            m_version = (string)regkey.GetValue(SpoRegistry.regValue_CurrentVersion);
        }
             m_version = string.isNullOrEmpty(m_version) ? m_version : "0.0.0.0";
                 return m_version;
        } 

}
string m_version;

1)在這種情況下,您無需將m_version實例m_version null。 通常,僅在聲明局部變量時才需要這樣做,以避免出現“使用未分配的局部變量[name] ”的編譯錯誤。 因此private string m_version; 就足夠了。

2)對於檢查空值和空值,使用String.IsNullOrEmpty()可以。 如果要檢查屬性是否以正確的格式返回字符串,則可以使用Regex.IsMatch()來確保屬性僅以版本號格式返回字符串。

[DefaultValue("0.0.0.0")]
public string AgentVersion
{
    get
    {
        return System.Text.RegularExpressions.Regex.IsMatch(m_version ?? String.Empty, @"\A\d+[.]\d+[.]\d+[.]\d+\z") 
            ? m_version 
            : "0.0.0.0";
    }
}

private string m_version;

我的正則表達式有些生疏,所以有人可能可以改進我在這里的功能,但這是您所需要的基本內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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