当前位置: 移动技术网 > IT编程>开发语言>.net > C# 中 equals( ) 和 == 的区别和用法

C# 中 equals( ) 和 == 的区别和用法

2018年09月14日  | 移动技术网IT编程  | 我要评论

黑榜之成王败寇,素衣白马指天下txt,完美江湖官网

 

equals:


下面的语句中,x、y 和 z 表示不为 null 的对象引用。

* 除涉及浮点型的情况外,x.equals(x) 都返回 true。

* x.equals(y) 返回与 y.equals(x) 相同的值。

* 如果 x 和 y 都为 nan,则 x.equals(y) 返回 true。

* 当且仅当 x.equals(z) 返回 true 时,(x.equals(y) && y.equals(z)) 才返回 true。

* 只要不修改 x 和 y 引用的对象,对 x.equals(y) 的相继调用将返回相同的值。

* x.equals(null) 返回 false。

==:

对于预定义的值类型,如果操作数的值相等,则相等运算符 (==) 返回 true,否则返回 false。

对于 string 以外的引用类型,如果两个操作数引用同一个对象,则 == 返回 true。

对于 string 类型,== 比较字符串的值。

 

equals与==的区别

"==" : 操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。

"equals" : 操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。 
而字符串是一个特殊的引用型类型,在c#语言中,重载了string 对象的很多方法方法(包括equals

 

总结如下:

1、对于值类型,==和equals等价,都是比较存储信息的内容。

2、对于引用类型,==比较的是引用类型在栈中的地址,equals方法则比较的是引用类型在托管堆中的存储信息的内容。

 

 

using system;

namespace equalstest
{
    class equalstest
    {
        static void main(string[] args)
        {
            //值类型
            int x = 1;
            int y = 1;
            console.writeline(x == y);//true
            console.writeline(x.equals(y));//true             

            //引用类型
            a a = new a();
            b b = new b();
            //console.writeline(a==b);//报错
            console.writeline(a.equals(b));//false

            //字符串(最像值类型的引用类型)
            string m = "1";
            string n = "1";
            console.writeline(m==n);//true
            console.writeline(m.equals(n));//true

            //结构体(最像引用类型的值类型)
            t t = new t();
            v v = new v();
            //console.writeline(t == v);//报错
            console.writeline(t.equals(v));//true

            console.read();

        }
    }

    class a { public int x = 1; }

    class b { public int x = 1; }

    struct t { int x; }

    struct v { int x; }

}
view code

 

 

原址:https://blog.csdn.net/studyofnet/article/details/16842235

           https://www.cnblogs.com/9cct/p/7749358.html

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网