关于结构的一点疑问
定义一个结构:
public struct Rect
{
//矩形的高
public double height;
//矩形的长
public double width;
//构造函数
public Rect(double x,double y)
{
height = x;
width = y;
}
//矩形的面积
public double Area()
{
return height * width;
}
//求圆的面积
public double CArea(double r)
{
return 3.14 * r * r;
}
主方法:static void Main(string[] args)
{
Rect r2 = new Rect(6, 7);
Console.WriteLine("矩形的面积为:{0}", r2.Area());
Console.WriteLine("请输入圆的半径:");
double r = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("圆面积为:{0}", r2.CArea(r));
double z = r2.CArea(r);
Rect r3 = r2;
double h = r3.Area();
double m = r3.CArea(5.2);
Console.WriteLine("r3的矩形面积为:{0}", h);
Console.WriteLine("r3的圆面积为:{0}", m);
Console.WriteLine("r2的圆面积为:{0}", z);
Console.WriteLine(object.Equals(r2, r3));
Console.ReadKey();
}
请问各位高手为什么最后object.Equals(r2,r3)的运行结果为true
两个对象的CArea()方法得到的值不是不一样吗?难道比较结构调用object.Equals()方法的时候就仅仅比较它们的构造函数是否一样?
------解决方案--------------------Rect r3 = r2;
它们指向的是同个内存对象
------解决方案--------------------任何类型,不重写Equals方法,调用的就是object.Equals()方法
object.Equals()方法比较两个对象的引用是否相当.
如果楼主还不明白那我觉得就没办法了,这是很基础的知识.