公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

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

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

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

前言

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

主站蜘蛛池模板: 精品国内自产拍在线播放观看 | a级毛片水真多 | 国产精品夜色一区二区三区 | 99久久综合狠狠综合久久浪潮 | 国产波霸爆乳一区二区黄色 | 国产日韩欧美集合一区二区三区 | 国产精品欧美亚洲大片在线观看 | 国产精品对白刺激音频在线观看 | 国产精品v欧美精品 | ww成人片在线观看 | 加勒比免费无码网址 | 国产一区二区美女自卫 | 国产亚洲精品久久无亚洲 | 国产成人精品日本亚洲专区 | 911午夜福利精品 | av天堂电影网 | 国产精品另类激情久久久免费 | 国产精品一久久香 | 99久久无色码中文字幕人妻 | 精品国产一区二区三区在线观看 | 成人日韩熟女高清视频一区 | 国模无码一区二区三区在线观看 | a级毛片影院天天看 | 国产喷水吹潮视频在线播放 | 国产精品一线二线三线品牌 | 成人免费毛片在线观看 | 东京热一本无码av | 国产在线视频欧美一区二区三区 | 国产一区二区三区高清在线 | 18禁美女脱光衣服自慰网站 | 国产二三区 | 成人国产午夜在线视频 | 国产性大片免费播放网站 | 3d新金瓶玥菲无删减完整版 | 国产国语系列在线观看 | 成人免费一级毛片在线播放视频 | 国产在线拍揄自揄拍无码 | 国产精品一区二区三区性色 | 加勒比精品久久一区二区三区 | 91亚洲自偷观看高清 | 国产精品视频第一区二 |