日期:2014-05-18  浏览次数:20779 次

关于结构的一点疑问
定义一个结构:
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()方法比较两个对象的引用是否相当.
如果楼主还不明白那我觉得就没办法了,这是很基础的知识.