欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C#中Equals和==運算符的區別

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

前言

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

值類型相等

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

引用型相等

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

1、自定義的引用類型

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

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

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

小結

1、值類型使用==運算符與Equals方法比較的是操作數的值。
2、特殊的字符串引用類型(string)使用==運算符與Equals方法比較的是操作數的值。(因為它兩是被重寫過的)
3、自定義引用類型使用==運算符與Equals方法比較的是操作數在棧中的地址。(我們可以重載Equals和==使其按我們自己的相等性邏輯進行比較
4、匿名類類型使用==運算符與Equals方法比較方式不同。


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