在C#中设置对象的默认`String`值

时间:2014-06-25 12:45:35

标签: c# .net default-value getter

我对C#比较新,所以默认值的概念对我来说有点混乱。

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

我想将这些对象的列表放入CheckedListBox。我希望盒子只显示序列号,而不是完整路径。 According to 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;
  }

}

2 个答案:

答案 0 :(得分:9)

stringString的默认值default(string)null,但这不是文档所指的内容。它引用了对象的ToString()值,which you can override

尝试这样的事情,使用真正的 C#约定(看看它有多可读!),同时注意override keyword

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

答案 1 :(得分:1)

要获取类实例的字符串表示形式,请覆盖ToString方法,以返回您的desidered值。在您的代码中,您编写toString()(小写T),因此C#区分大小写,它不是正确的覆盖。

只需更改为

 public override string ToString()
 {
     return serialNumber;
 }