狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C#中Equals和==運(yùn)算符的區(qū)別

admin
2024年6月8日 18:18 本文熱度 822

前言

C#語(yǔ)言是一種強(qiáng)類型語(yǔ)言,要求每個(gè)變量都必須指定數(shù)據(jù)類型。C#語(yǔ)言的數(shù)據(jù)類型分為值類型引用類型二種。在實(shí)際編寫程序時(shí),經(jīng)常會(huì)對(duì)二個(gè)數(shù)據(jù)進(jìn)行比較其是否相等。C#語(yǔ)言為我們提供了==運(yùn)算符Equals方法。在應(yīng)用這二種方式時(shí)是存在一些區(qū)別的,下面就一起了解兩者有什么區(qū)別。

值類型相等

對(duì)于預(yù)定義的值類型,二個(gè)操作數(shù)的相等比較,是判斷操作數(shù)的值是否相等。如果相等則返回true,不等則返回false。在值類型的判斷上,不論是使用運(yùn)算符==,還是使用Equals方法二者是沒(méi)有區(qū)別的。
示例:
namespace Fountain.EquationDemo{    class Program    {        /// <summary>        /// 控制臺(tái)程序入口        /// </summary>        static void Main(string[] args)        {            double applePrice = 9.45;            double bananaPrice = 9.45;            // 使用==比較            Console.WriteLine("運(yùn)算符==比較結(jié)果為:{0}", applePrice == bananaPrice);            // 使用 Equals 方法比較            Console.WriteLine("Equals方法比較結(jié)果為:{0}", applePrice.Equals(bananaPrice));            Console.ReadLine();        }    }}#region 輸出結(jié)果運(yùn)算符==比較結(jié)果為:TrueEquals方法比較結(jié)果為:True#endregion

引用型相等

string是一種特殊的引用類型,所以對(duì)于引用類型的相等判斷,我們需分為自定義的引用類型特殊的字符串引用類型二個(gè)方向看。

1、自定義的引用類型

自定義引用類型使用Equals和==運(yùn)算符二種方式比較的是引用類型在棧中的地址。當(dāng)然一些預(yù)定義的引用類型也是一樣的。(沒(méi)有對(duì)Equals和==進(jìn)行過(guò)重載
示例:
namespace Fountain.EquationDemo{    class Program    {        /// <summary>        /// 控制臺(tái)程序入口        /// </summary>        static void Main(string[] args)        {            Student student1 = new Student()            {                ID = "0001",                Name = "小明"            };            Student student2 = new Student()            {                ID = "0001",                Name = "小明"            };            // 定義對(duì)象 并將 student1 賦值給對(duì)象 student3            Student student3 = student1;            // 二個(gè)對(duì)象比較            Console.WriteLine("student1與student2使用==比較結(jié)果為:{0}", student1 == student2);            // 二個(gè)對(duì)象比較            Console.WriteLine("student1與student2使用Equals方法比較結(jié)果為:{0}", student1.Equals(student2));            // 二個(gè)對(duì)象比較            Console.WriteLine("student1與student3使用==比較結(jié)果為:{0}", student1 == student3);            // 二個(gè)對(duì)象比較            Console.WriteLine("student1與student3使用Equals方法比較結(jié)果為:{0}", student1.Equals(student3));        }    }    /// <summary>    /// 定義自定義類    /// </summary>    public class Student    {        /// <summary>        /// 學(xué)號(hào)        /// </summary>        public string ID { get; set; }        /// <summary>        /// 姓名        /// </summary>        public string Name { getset; }    }}#region 輸出結(jié)果student1與student2使用==比較結(jié)果為:Falsestudent1與student2使用Equals方法比較結(jié)果為:False
student1與student3使用==比較結(jié)果為:Truestudent1與student3使用Equals方法比較結(jié)果為:True#endregion
匿名類使用==運(yùn)算符是比較操作數(shù)在棧中的地址,使用Equals方法則比較操作數(shù)的值。
示例:
namespace Fountain.EquationDemo{    class Program    {        /// <summary>        /// 控制臺(tái)程序入口        /// </summary>        static void Main(string[] args)        {            // 聲明匿名類            var anonymous1 = new { ID = "1000", Name = "孫悟空" };            // 匿名類            var anonymous2 = new { ID = "1000", Name = "孫悟空" };            //             Console.WriteLine("anonymous1與anonymous2使用==比較結(jié)果為:{0}", anonymous1 == anonymous2);            //             Console.WriteLine("anonymous1與anonymous2使用Equals方法比較結(jié)果為:{0}", anonymous1.Equals(anonymous2));        }    }}#region 輸出結(jié)果anonymous1與anonymous2使用==比較結(jié)果為:Falseanonymous1與anonymous2使用Equals方法比較結(jié)果為:True#endregion

2、 特殊的字符串引用類型

.NET在string類型上重寫了Equals方法和==運(yùn)算符,使Equals和==運(yùn)算符二種方式比較是以string字符串內(nèi)容進(jìn)行。也就是說(shuō)這二者在string類型上是沒(méi)有區(qū)別的。
示例:
namespace Fountain.EquationDemo{    class Program    {        /// <summary>        /// 控制臺(tái)程序入口        /// </summary>        static void Main(string[] args)        {            string expressCode = "YTO";            string objectExpressCode = new string(new char[] { 'Y', 'T', 'O'});
           Console.WriteLine("運(yùn)算符==比較結(jié)果為:{0}", "YTO" == objectExpressCode);            Console.WriteLine("Equals方法比較結(jié)果為:{0}", "YTO".Equals(objectExpressCode));
           Console.WriteLine("運(yùn)算符==比較結(jié)果為:{0}", "YTO" == expressCode);            Console.WriteLine("Equals方法比較結(jié)果為:{0}", "YTO".Equals(expressCode));        }    }}
#region 輸出結(jié)果運(yùn)算符==比較結(jié)果為:TrueEquals方法比較結(jié)果為:True
運(yùn)算符==比較結(jié)果為:TrueEquals方法比較結(jié)果為:True#endregion

小結(jié)

1、值類型使用==運(yùn)算符與Equals方法比較的是操作數(shù)的值。
2、特殊的字符串引用類型(string)使用==運(yùn)算符與Equals方法比較的是操作數(shù)的值。(因?yàn)樗鼉墒潜恢貙戇^(guò)的)
3、自定義引用類型使用==運(yùn)算符與Equals方法比較的是操作數(shù)在棧中的地址。(我們可以重載Equals和==使其按我們自己的相等性邏輯進(jìn)行比較
4、匿名類類型使用==運(yùn)算符與Equals方法比較方式不同。


該文章在 2024/6/8 18:18:03 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved