设置c#中对象的默认' String '值

本文关键字:String 默认 对象 设置 | 更新日期: 2023-09-27 18:10:24

我对c#比较陌生,所以默认值的概念对我来说有点困惑。

我目前有一个对象,它包含两个String值,serialNumberfullPath。它是一个简单的对象,只包含这两个string和各自的getter方法(它们在对象创建后不会被更改;因此没有setter方法)。

我想把这些对象的列表放入CheckedListBox。我希望该框只显示序列号,而不是完整的路径。根据MSDN, CheckedListBox使用对象的默认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;
  }
}

设置c#中对象的默认' String '值

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;
 }