none
关于自定义对象的付值与比较的问题。 RRS feed

  • 问题

  • 假如我自定义了一个class CMyClass 和 两个对象 CMyClass  Obj1 和 Obj2 。

    1。 Obj1 == Obj2 时是 两个内存地址的比较,还是 两个对象内部每个值得比较呢?

    2。Obj1 = Obj2, 是一个内存地址付值操作,还是两个对象内部属性的付值操作呀?

    谢谢 

    2010年4月18日 14:31

答案

  • 1。 Obj1 == Obj2 时是 两个内存地址的比较,还是 两个对象内部每个值得比较呢?

    如果你没有重载 == 运算符,那么默认 == 是判断两个实例是否同为一个即引用相等,至于是不是"内存地址的比较",我也不知道如何回答,从如果从“引用相等”出发,可以认为是吧,

    2。Obj1 = Obj2, 是一个内存地址付值操作,还是两个对象内部属性的付值操作呀?

    对于引用类型即 class,是引用赋值,可以认为是你这里的“地址赋值”吧

    对于指类型,比如 Int32,是对象内部值赋值


    问题要简单,错误须详细@错误/异常/堆栈信息+操作系统+软件版本+all the context of the issue Hope Helpful | http://www.leoworks.net
    • 已建议为答案 Kaedei 2010年4月20日 15:41
    • 已标记为答案 KeFang Chen 2010年4月23日 6:38
    2010年4月18日 17:13

全部回复

  • 1。 Obj1 == Obj2 时是 两个内存地址的比较,还是 两个对象内部每个值得比较呢?

    如果你没有重载 == 运算符,那么默认 == 是判断两个实例是否同为一个即引用相等,至于是不是"内存地址的比较",我也不知道如何回答,从如果从“引用相等”出发,可以认为是吧,

    2。Obj1 = Obj2, 是一个内存地址付值操作,还是两个对象内部属性的付值操作呀?

    对于引用类型即 class,是引用赋值,可以认为是你这里的“地址赋值”吧

    对于指类型,比如 Int32,是对象内部值赋值


    问题要简单,错误须详细@错误/异常/堆栈信息+操作系统+软件版本+all the context of the issue Hope Helpful | http://www.leoworks.net
    • 已建议为答案 Kaedei 2010年4月20日 15:41
    • 已标记为答案 KeFang Chen 2010年4月23日 6:38
    2010年4月18日 17:13
  • 关于C#中==和=,请参考:

    http://msdn.microsoft.com/en-us/library/53k8ybth(v=VS.100).aspx

    http://msdn.microsoft.com/en-us/library/sbkb459w(v=VS.100).aspx

     

    至于说你所定义的类,需要看其是值类型还是引用类型来判断。可以使用string(引用类型)和int(值类型)来做测试。

    • 已编辑 络绎 2010年4月19日 10:36 Add more details
    2010年4月19日 10:32