先来说说重写tostring() 很简单如果完全没有看过的 可以看一下 如果知道就不用看了 呵呵 因为很简单我们直接来看代码 呵呵
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方法 呵呵 就是这么简单 如果觉得对自己有帮助的 就顶一下 要是没帮助 或者 觉得我哪里说的不对都可以说出来哦 哈哈
转载请注明出处:www.cnblogs.com/xylasp
欢迎加关注 呵呵
反馈文章质量,你可以通过快速通道评论: