簡體   English   中英

在C#中設置對象的默認`String`值

[英]Setting the default `String` value of an object in C#

我對C#比較新,所以默認值的概念對我來說有點混亂。

我目前有一個包含兩個String值的對象, serialNumberfullPath 這是一個簡單的對象,只包含這兩個字符串和相應的getter方法(在創建對象后不會更改它們;因此沒有setter方法)。

我想將這些對象的List放入CheckedListBox 我希望盒子只顯示序列號,而不是完整路徑。 根據MSDNCheckedListBox使用對象的默認String值。 如何在創建對象時將其設置為serialNumber 同樣,之后不應該改變它。 另外,我不是getset關鍵字的忠實粉絲(我來自Java背景),所以如果可能的話,我想用更常規的getter / setter這樣做,就像我在下面為了目的所做的那樣代碼可讀性

class ModuleData
{

  private String serialNumber;
  private String fullPath;


  public ModuleData(String serialNumber, String fullPath)
  {
     this.serialNumber = serialNumber;
     this.fullPath = fullPath;
  }

  public String getSerialNumber()
  {
     return serialNumber;
  }

  public String getFullPath()
  {
     return fullPath;
  }

  public String toString()
  {
     return serialNumber;
  }

  public String DefaultValue
  {
     return serialNumber;
  }

}

stringString的默認值default(string)null ,但這不是文檔引用的內容。 它引用了對象的ToString()值, 您可以覆蓋它

嘗試這樣的東西,使用真正的 C#約定(看看它的可讀性!),還要注意override關鍵字

public class ModuleData
{
    public ModuleData(string serialNumber, string fullPath)
    {
        SerialNumber = serialNumber;
        FullPath = fullPath;
    }

    public string SerialNumber { get; private set; }

    public string FullPath { get; private set; }

    public override string ToString()
    {
        return SerialNumber;
    }
}

要獲取類實例的字符串表示形式,請重寫ToString方法,以返回所需的值。 在您的代碼中,您編寫toString()(小寫T),因此C#區分大小寫它不是正確的覆蓋。

只需改為

 public override string ToString()
 {
     return serialNumber;
 }

暫無
暫無

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

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