亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#基礎:Equals()與運算符==的區別分析

2020-01-24 03:16:22
字體:
來源:轉載
供稿:網友
對于值類型,如果對象的值相等,則相等運算符 (==) 返回 true,否則返回 false。對于string 以外的引用類型,如果兩個對象引用同一個對象,則 == 返回 true。對于 string 類型,== 比較字符串的值。
==操作比較的是兩個變量的值是否相等。
equals()方法比較的是兩個對象的內容是否一致.equals也就是比較引用類型是否是對同一個對象的引用。
對于值類型的比較,這里就不做描述了,下面討論引用類型的比較:
首先我們看一段程序
復制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
    class Person
    {
        private string name;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        public Person(string name)
        {
            this.name = name;
        }
    }
}

復制代碼 代碼如下:

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();
        }
    }
}

運行程序,會輸出什么呢?
答案是 true,true,false,true,false,false,true,true。
為什么會出現這個答案呢?因為值類型是存儲在內存中的堆棧(以后簡稱棧),而引用類型的變量在棧中僅僅是存儲引用類型變量的地址,而其本身則存儲在堆中。
    ==操作比較的是兩個變量的值是否相等,對于引用型變量表示的是兩個變量在堆中存儲的地址是否相同,即棧中的內容是否相同。
    equals操作表示的兩個變量是否是對同一個對象的引用,即堆中的內容是否相同。
    而字符串是一個特殊的引用型類型,在C#語言中,重載了string 對象的很多方法方法(包括equals()方法),使string對象用起來就像是值類型一樣。
    因此在上面的例子中,字符串a和字符串b的兩個比較是相等的。
    對于object g 和object h 時內存中兩個不同的對象,所以在棧中的內容是不相同的,故不相等。而g.equals(h)用的是sting的equals()方法故相等(多太)。如果將字符串a和b作這樣的修改:
        string a="aa";
        string b="aa";
則,g和h的兩個比較都是相等的。這是因為系統并沒有給字符串b分配內存,只是將"aa"指向了b。所以a和b指向的是同一個字符串(字符串在這種賦值的情況下做了內存的優化)。
對于p1和p2,也是內存中兩個不同的對象,所以在內存中的地址肯定不相同,故p1==p2會返回false,又因為p1和p2又是對不同對象的引用,所以p1.equals(p2)將返回false。
對于p3和p4,p4=p3,p3將對對象的引用賦給了p4,p3和p4是對同一個對象的引用,所以兩個比較都返回true。
如果我們對person的equals方法重寫:
復制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
    class Person
    {
        private string name;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        public Person(string name)
        {
            this.name = name;
        }
        public override bool Equals(object obj)
        {
            if (!(obj is Person))
                return false;
            Person per = (Person)obj;
            return this.Name == per.Name;
        }
    }
}

那么p1.equals(p2),就會返回true。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲天堂开心观看| 日韩欧美大尺度| 国产精品久久久久久久久借妻| 国产精品精品视频| 色偷偷av一区二区三区| 日本午夜人人精品| 亚洲精品中文字幕有码专区| 国产精品女人网站| 欧美大成色www永久网站婷| www.99久久热国产日韩欧美.com| 久久国产精品久久精品| 欧美又大又硬又粗bbbbb| 国产精品海角社区在线观看| 欧美大片va欧美在线播放| 亚洲成人aaa| 亚洲人成在线电影| 亚洲精品免费av| 亚洲日韩欧美视频| 中文字幕日韩电影| 中文字幕国产日韩| 麻豆成人在线看| 亚洲国产欧美自拍| 91色琪琪电影亚洲精品久久| 欧美在线视频观看| 亚洲国产黄色片| 欧美精品久久久久久久久| 北条麻妃在线一区二区| 国产精品对白刺激| 国产精品91在线观看| 亚洲美女在线视频| 成人免费淫片aa视频免费| 国产精品久久久久影院日本| 欧美疯狂xxxx大交乱88av| 成人精品aaaa网站| 欧美精品激情视频| 国产精品香蕉av| 欧美区在线播放| 欧美一级视频免费在线观看| 亚洲成avwww人| 亚洲精品免费一区二区三区| 亚洲影视九九影院在线观看| 91免费人成网站在线观看18| 2019av中文字幕| 美女久久久久久久久久久| 日韩av中文在线| 国产mv免费观看入口亚洲| 国产成人精品免费久久久久| 国产亚洲欧洲在线| 在线日韩精品视频| 亚洲美女www午夜| 色综合老司机第九色激情| 亚洲国产精品悠悠久久琪琪| 91精品视频播放| 91综合免费在线| 2019中文字幕全在线观看| 欧美性猛交99久久久久99按摩| 国产美女直播视频一区| 日韩成人在线免费观看| 日本韩国欧美精品大片卡二| 国产精品久久97| 色噜噜国产精品视频一区二区| 91精品国产乱码久久久久久久久| 狠狠躁夜夜躁久久躁别揉| 欧美成人亚洲成人| 国产精品久久久久久久久久久新郎| 国产精品久久在线观看| 亚洲一区二区三区sesese| 国产69久久精品成人看| 日本中文字幕久久看| 日产日韩在线亚洲欧美| 免费99精品国产自在在线| 日韩高清免费观看| 欧美日韩在线免费观看| 欧美丝袜第一区| 国产小视频91| 92福利视频午夜1000合集在线观看| 欧美一级bbbbb性bbbb喷潮片| 欧美在线观看一区二区三区| 不卡伊人av在线播放| 欧美一区在线直播| 一本色道久久综合亚洲精品小说| 中文字幕欧美精品在线| 91在线国产电影| 亚洲精品自产拍| 亚洲tv在线观看| 日韩一区二区三区在线播放| 粉嫩av一区二区三区免费野| 91精品国产综合久久香蕉| 国产激情久久久| 日韩精品免费看| www欧美xxxx| 亚洲精品久久久久久久久久久久久| 在线播放日韩av| 欧美色欧美亚洲高清在线视频| 亚洲国产精久久久久久久| 久久国产精品久久久久久久久久| 国产精品最新在线观看| 欧美国产第二页| 欧美香蕉大胸在线视频观看| 成人97在线观看视频| 欧美人交a欧美精品| 黄色91在线观看| 午夜免费久久久久| 红桃视频成人在线观看| 国产精品r级在线| 日韩电影在线观看永久视频免费网站| 日韩av一区在线| 久久久噜噜噜久噜久久| 国产精品久久av| 国产日韩在线免费| 欧美丝袜美女中出在线| 成人精品网站在线观看| 成人日韩在线电影| 国产精品一区二区三区在线播放| 国语自产精品视频在线看抢先版图片| 国产一区二区日韩| 欧美日本啪啪无遮挡网站| 欧美天堂在线观看| 久久69精品久久久久久久电影好| 日韩少妇与小伙激情| 亚洲性日韩精品一区二区| 久久久久久久一| 国产91色在线免费| 亚洲精品国产综合区久久久久久久| 久久久久国产精品www| 亚洲女人天堂色在线7777| 久久精品电影网| 91精品视频免费| 韩国精品美女www爽爽爽视频| 日韩av理论片| 国产日韩换脸av一区在线观看| 久久视频国产精品免费视频在线| 一本色道久久综合狠狠躁篇怎么玩| 久久久久亚洲精品| 国产日韩视频在线观看| 热久久这里只有| 国产精品自拍视频| 中文字幕精品www乱入免费视频| 91在线无精精品一区二区| 57pao精品| 韩日精品中文字幕| 成人h片在线播放免费网站| 亚洲丝袜在线视频| 国产91色在线| 亚洲一区二区福利| 亚洲精品日韩在线| 国产精品欧美久久久| 欧美成人精品在线观看| 91亚洲国产成人久久精品网站| 神马国产精品影院av| 亚洲一区免费网站| 久久理论片午夜琪琪电影网| 亚洲偷欧美偷国内偷| 国产主播喷水一区二区| 国产香蕉97碰碰久久人人| 亚洲欧美日本另类| 九九热在线精品视频| 色中色综合影院手机版在线观看| 欧美一级电影在线| 亚洲精品一区二区在线| 亚洲欧美国产视频| 欧美丝袜一区二区三区| 日韩在线观看免费高清完整版| 精品无码久久久久久国产|