public class User
{
public int Id {get;set;}
public string Name {get;set;}
public int Age {get;set;}
public string Sex {get;set;}
public override string ToString()
{
return $“{Name}今年{Age}岁!”;
}
}
重写之后我们就可以得到我们想要的输出内容了。虽然重写 ToString 可以得到我们想要的内容,但是我们不能在任何情况下都重写 ToString, 只有在以下三种情况下方可重写 ToString :
代码面对的最终用户是开发人员;
需要写入日志;
IDE调试输出。
在上面三种情况下重写 ToString 我们还需要遵循一些设计规范,这些设计规范并不是微软所定义的,而是开发人员在开发过程中总结出来的:
ToString 返回的字符串长度应该简短,内容描述应该清晰;
不要从 ToString 方法中返回 “”,而要返回 null ;
不要再 ToString 方法中引发并抛出异常,针对异常应该及时捕获并处理;
如果返回值存在地域文化(比如语言)或存在格式化要求,那么就必须重写 ToString 方法;
ToString 重写后必须返回独一无二的字符串来标识实例对象。
到这里为止我们讲解完了 ToString 重写的方法以及规则。相对来说 ToString 方法重写是 Object 虚方法重写中十分简单的部分,作为开发人员只需按照我前面多说的规则、方法以及实际情况来重写即可。
二、 Equals 和 ReferenceEquals
在 C# 中如果对两个对象进行相等判断,一共有两种情况分别是:判断两者的值相等 或者 判断两者的引用地址相同 。一般情况下我们需要对值类型对象判断值相等,对引用类型对象判断指向地址相同。Equals 就是用来对引用类型对象判断指向地址是否相同的。对于重写 Equals 方法,很多开发人员认为易如反掌,但是在开发中往往忘记一些很重要的细节,这些细节对于程序来说至关重要,下面我将一一进行详细讲解。