c# - 要用属性或字段覆盖 ToString() 方法?

标签 c# properties field overriding tostring

  • 什么时候应该用类属性覆盖 ToString() 方法,什么时候用字段覆盖?
  • 只有一种方法有效还是两种方法都有效?
  • 如果两者都可以,分别在什么情况下使用?

    public override string ToString()
    {
       return String.Format("{0},{1}", this.field1, this.field2);
       // ..or
       return String.Format("{0},{1}", this.Property1, this.Property2);
    }
    

请帮忙???

最佳答案

两者皆可。

但是,需要考虑的一件事是属性更普遍地被认为是“面向公众的”,而字段通常被大多数 C# 开发人员认为是“私有(private)的”。

因此,如果您希望能够对未直接修改的内部值调用 .ToString(),请使用字段(并保持私有(private))。如果您对它们进行外部修改以及通过 .ToString() 返回那些外部修改的值没有问题,请使用属性。

最后,如果您需要在返回属性值之前对其执行任何类型的额外“逻辑”,那么最好使用属性,因为您可以在属性的 getter 中修改它。

关于c# - 要用属性或字段覆盖 ToString() 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37140989/

相关文章:

c# - 将整数写入 OPC UA 服务器 - “not of the same type” 错误

c# - HttpWebRequest 未返回,连接关闭

delphi - 已发布的持久属性 - 我应该使用 FMyPercient.Assign(Value) 还是 FMyPercient := Value?

java - Liferay Junit-Mockito 测试

c++ - 如何在 C++ 中将外部类的模板类型用作内部类中的字段?

c# - 尝试绘制波形但不绘制任何数据

c# - 申请表 - 检查输入是否为空

java - 如何将从 Controller 读取的属性文件的值注入(inject)到 bean 中?

mongodb - mongoDB中的字符串字段值长度

php - 我应该如何获取 Drupal 7 自定义节点的特定字段中包含的值?