说说重写ToString()方法和Equals()方法
时间:2010-11-09
来源:Mr.X
class Shape
{
private string input;
public string Input
{
get { return input; }
set { input = (string.IsNullOrEmpty(value) ? "No" : value); }
}
private string sex;
public string Sex
{
get { return sex; }
set { sex = (string.IsNullOrEmpty(value) ? "男" : value); }
}
public override string ToString()
{
return string.Format("Hello {0} You Sex is {1}", input,sex);
}
}
因为每个类如果不设置继承的父类都会默认继承System.Object类所以直接 override tostring()方法 就可以重写 tostring() 了 是不是很简单呢 接下来我们再来说说 重写Equals()方法 这个方法是用来比对2个值是不是同一个对象的 首先我们来看看 下面这段代码
static void Main(string[] args)
{
Shape sp = new Shape();
sp.Input = "Man";
sp.Sex="男";
Console.WriteLine(sp.ToString());
Shape sp2 = sp;
sp2.Sex = "女";
Console.WriteLine( sp2.Equals(sp));
}
这段代码 首先会输出 Hello Man You Sex is 男 然后会输出一个TRUE 因为 sp2 其实就是sp 他们引用的是同一个对象,那么如果我们现在不想这么做 我们想通过 input 和 sex来判断是不是相同 怎么做呢? 可以看看下面这段代码 从刚才的代码上扩充
class Shape
{
private string input;
public string Input
{
get { return input; }
set { input = (string.IsNullOrEmpty(value) ? "No" : value); }
}
private string sex;
public string Sex
{
get { return sex; }
set { sex = (string.IsNullOrEmpty(value) ? "男" : value); }
}
public override string ToString()
{
return string.Format("Hello {0} You Sex is {1}", input,sex);
}
public override bool Equals(object obj)
{
Shape s = obj as Shape;
bool b = false;
if (s != null)
{
if (this.input == s.input && this.sex == s.sex)
{
b = true;
}
else
{
b = false;
}
}
else
{
Console.WriteLine("You input is error!");
}
return b;
//return base.Equals(obj);
}
public override int GetHashCode()
{
return this.ToString().GetHashCode();
}
}
这里 我们 override 了Equals方法 然后用AS 做了一个类型转换as 关键字 在做转换时 如果对象不可以被转换 则会返回NULL 其它的代码应该 一眼就能看出来了 最后 如果重写Equals方法 就要把 GetHashCode 也一起重写 获取散列值的方法很多 最简单的就是 tostring().gethashcode() 然后看看怎么调用
static void Main(string[] args)
{
Shape sp = new Shape();
sp.Input = "Man";
sp.Sex="男";
Shape sp3 = new Shape();
sp3.Input = "Man";
sp.Sex = "男";
Console.WriteLine(sp3.Equals(sp));
}
虽然 这是2个对象 但最后还是会返回true 因为我们重写Equals方法 呵呵 就是这么简单 如果觉得对自己有帮助的 就顶一下 要是没帮助 或者 觉得我哪里说的不对都可以说出来哦 哈哈
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28