== 和equals方法区别

== 和equals 方法区别 

① ==操作比较的是两个变量的值是否相等。比较的是的内容
②equals()方法比较的是两个对象的内容是否一致.比较的是的内容

 

对于值类型,如果对象的值相等,则相等运算符 (==) 返回 true,否则返回 false。

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

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

namespace ConsoleApplication1
{
    class Person
    {
        private string name;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        public Person(string name)
        {
            this.name = name;
        }
    }

 

    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);               // true,string可以看成是值类型
            Console.WriteLine(a.Equals(b));          // true

           

            object g = a;
            object h = b;
            Console.WriteLine(g == h);               // fasle,在栈中开辟了两块地方
            Console.WriteLine(g.Equals(h));          // true,堆中的内容相等

           

            Person p1 = new Person("jia");           
            Person p2 = new Person("jia");
            Console.WriteLine(p1 == p2);             // fasle,在栈中开辟了两块地方
            Console.WriteLine(p1.Equals(p2));        // true,equals指定不明确,不知道比较神马


            Person p3 = new Person("jia");
            Person p4 = p3;
            Console.WriteLine(p3 == p4);             // true,p3直接把所有东东都给了p4
            Console.WriteLine(p3.Equals(p4));        // true

           

            Console.ReadLine();
        }
    }

} 


   

 

posted on 2012-06-20 08:13  zhuhai  阅读(233)  评论(1)    收藏  举报

导航

我的百度空间