国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

一起學習《C#高級編程》2--比較對象的相等性

2019-11-17 02:41:52
字體:
來源:轉載
供稿:網友

一起學習《C#高級編程》2--比較對象的相等性

  今后爭取每兩天能更新一次。平日的誘惑太多,雙休只顧玩了,進度有點慢。

  接上一講的,類型的安全性,留下了點小尾巴——比較對象的相等性。

  C#有四種比較相等的方式:除了“==”運算符外,System.Object定義了3中方法:ReferenceEqual()方法和兩種Equals();

  1.首先是“==”運算符:

  對于值類型,“==”比較兩個值是否相等;而對于引用類型,“==”則是比較兩個對象的引用地址是否相同。這里有個特例,就是string字符串類型,“==”是比較字符串的值而不是引用地址,這是因為系統重寫了“==“運算符。關于運算符的重載,后面一講會說。

  2.ReferenceEqual()方法

  ReferenceEqual()是靜態方法,用于比較兩個對象是否引用類的同一個實例,即引用自同一個內存中的地址。作為靜態方法,不能被重寫。如果兩個引用 引用自同一個對象實例,則返回true,否則返回false。

  

SomeClass s1 = new SomeClass(); SomeClass s2 = new SomeClass(); SomeClass s3 = s1; bool b1 = ReferenceEquals(null, null); bool b2 = ReferenceEquals(s1, s2); Console.WriteLine(b1);    //true Console.WriteLine(b2);    //false,創建了不同實例,引用地址不同 Console.WriteLine(ReferenceEquals(s1, s3));    //true,s1,32引用地址相同 Console.WriteLine(ReferenceEquals(1, 1));    //flse,因為不是比較數值,而是比較引用地址

注意點:

因為ReferenceEquals()是比較引用類型的,當執行值類型間比較時,會采取裝箱(上一講提到)操作,把值類型轉換為引用類型,所以會返回false。

bool b=ReferenceEquals(1,1);  會返回false值

3.虛擬的Equal()方法: Equals(Object)

說明:確定指定的Object是否等于當前的Object。

因為是虛擬的方法,可以被重寫。類似于“==”運算符,支持比較值類型和引用類型,其中string被當作值類型比較

4.靜態的Equals()方法: Equals(Object,Object)

說明:確定指定的對象實例是否被視為相等。

關于Equals方法,書中也僅僅是簡單介紹了下,詳細解答可以參考MSDN文檔:http://msdn.microsoft.com/zh-cn/library/System.Object.Equals(v=vs.100).aspx,上面對Equals()的兩個方法有著詳細的介紹。

下一篇講,運算符的重載。

  


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 唐海县| 固阳县| 得荣县| 大新县| 安多县| 廊坊市| 普兰县| 金华市| 万荣县| 盐亭县| 静宁县| 临城县| 定南县| 射洪县| 垫江县| 榕江县| 普安县| 陵水| 澎湖县| 新乐市| 乌什县| 宣威市| 定远县| 平阳县| 垦利县| 乌海市| 利川市| 侯马市| 大荔县| 吴江市| 西昌市| 息烽县| 丰县| 乐安县| 咸阳市| 河西区| 正蓝旗| 洛浦县| 华蓥市| 新兴县| 武义县|