苏飞论坛

标题: C#中==与equal方法 [打印本页]

作者: 站长苏飞    时间: 2013-1-21 14:44
标题: C#中==与equal方法
                                    equal与==的区别
对于值类型,如果对象的值相等,则相等运算符 (==) 返回 true,否则返回 false。
对于string 以外的引用类型,如果两个对象引用同一个对象,则 == 返回 true。
对于 string 类型,== 比较字符串的值。==操作比较的是两个变量的值是否相等。
equals()方法比较的是两个对象的内容是否一致.
==也就是比较引用类型是否是对同一个对象的引用。例子:

[code=csharp]using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string a = new string(new char[] { 'h', 'e', 'l', 'l', 'o' });
            string b = new string(new char[] { 'h', 'e', 'l', 'l', 'o' });
            Console.WriteLine(a == b);
            Console.WriteLine(a.Equals(b));

            object g = a;
            object h = b;
            Console.WriteLine(g == h);
            Console.WriteLine(g.Equals(h));

            Person p1 = new Person("jia");
            Person p2 = new Person("jia");
            Console.WriteLine(p1 == p2);
            Console.WriteLine(p1.Equals(p2));


            Person p3 = new Person("jia");
            Person p4 = p3;
            Console.WriteLine(p3 == p4);
            Console.WriteLine(p3.Equals(p4));

            Console.ReadLine();
        }
    }
}[/code]
  1. 输出
  2. true,true,false,true,false,false,true,true。
复制代码
[code=csharp]IPAddress ip1 = IPAddress.Parse("192.168.0.1");
IPAddress ip2 = IPAddress.Parse("192.168.0.1");
Console.WriteLine("ip1 == ip2: " + (ip1 == ip2).ToString());
Console.WriteLine("ip1.Equals(ip2): " + ip1.Equals(ip2).ToString());

输出:
ip1 == ip2: False
ip1.Equals(ip2): True [/code]

equals:比较字符串的内容是否相同,字符串为null时不能调用该方法进行比较
==:父类object中默认是比较对象的地址是否相同,在string中被重写,重新实现为比较字符串的内容是否相同,若字符串为null,也可使用==比较        

对于值类型,如果对象的值相等,则相等运算符 (==) 返回 true,否则返回 false。对于string 以外的引用类型,如果两个对象引用同一个对象,则 == 返回 true。对于 string 类型,== 比较字符串的值。
==操作比较的是两个变量的值是否相等。
equals()方法比较的是两个对象的内容是否一致.==也就是比较引用类型是否是对同一个对象的引用。

作者: Koson    时间: 2013-1-21 16:20
不错,支持一下。
作者: Eagle    时间: 2013-1-21 19:46
已阅,顶一下
作者: 幻雪丶逆时光    时间: 2013-1-22 08:47
我一直使用 = 号. 后来听 同事说  equals 使用的资源较小 耗时少.
后来又在网上看  = 号 比 equals 好
我现在已经处于迷茫期   = =#
作者: 7685780    时间: 2013-3-26 11:57
幻雪丶逆时光 发表于 2013-1-22 08:47
我一直使用 = 号. 后来听 同事说  equals 使用的资源较小 耗时少.
后来又在网上看  = 号 比 equals 好
我 ...

那哪个好?




欢迎光临 苏飞论坛 (http://www.sufeinet.com/) Powered by Discuz! X3.4