1. 程式人生 > >[C#基礎教程]之Equals,ReferenceEquals,==的區別

[C#基礎教程]之Equals,ReferenceEquals,==的區別

在.net中有幾種比較相等的方法

  object的靜態ReferenceEquals()

  object的靜態Equals()

  object的示例Equals()

  運算子==

  下面介紹一下他們的區別和用法。

  ReferenceEquals

  ReferenceEquals用於比較引用型別的引用是是否指向同一個物件。它只能比較引用型別。當把值型別傳給它的時候永遠都會返回false,因為值型別作為引數的時候首先會裝箱,經過裝箱的值型別哪怕是指相等,但是也是兩個不同的物件,所以變數是指向不同的物件,所以永遠返回false。

?
int x = 10; int y = 10; bool b1 = object.ReferenceEquals(x,y);

  這裡結果肯定是返回false,但是如果是比較引用型別,如果是兩個引用指向同一個物件,則為true。

  我們還是先定義實體類

?
public class Person { private int _personId; public int PersonId { get {return _personId; }
set { _personId = value; } } private string _firstName; public string FirstName { get {return _firstName; } set { _firstName = value; } } private string _lastName; public string LastName { get {return _lastName; } set { _lastName = value; } }
public Person() { } public Person(int personId,string firstName,string lastName) { this._personId = personId; this._firstName = firstName; this._lastName = lastName; }

相關推薦

[C#基礎教程]Equals,ReferenceEquals,==的區別

在.net中有幾種比較相等的方法   object的靜態ReferenceEquals()   object的靜態Equals()   object的示例Equals()   運算子==   下面介紹一下他們的區別和用法。   

C#基礎教程IComparable用法,實現List.sort()排序

排序 跑步 地址 parent reading result object http 第k大的數 List<T>.sort()可以實現對T的排序,比如List<int>.sort()執行後集合會按照int從小到大排序。如果T是一個自定義的Objec

【轉載】C#掃盲:==/Equals /ReferenceEquals 異同的總結,相等性你真的知道嗎?

lin 轉載 對待 rip 代數 .com 靜態方法 而是 tro 1.前言 == Equals ReferenceEquals 三個相等性測試,是.NET提供給程序員使用的三個方法,他們之間有什麽聯系和區別,你真的仔細研究過?雖然之前也多多少少知道一點,但是有時候又難免混

學了指標沒學動態記憶體一切都白搭!C語言基礎教程記憶體管理

本文將講解 C 中的動態記憶體管理。C 語言為記憶體的分配和管理提供了幾個函式。這些函式可以在<stdlib.h>標頭檔案中找到。 在記憶體中動態地分配 num 個長度為 size 的連續空間,並將每一個位元組都初始化為 0。所以它的結果是分配了 n

Linux基礎教程/dev/null和/dev/zero的區別及其用法

在Linux作業系統中/dev/null和/dev/zero是兩個相似卻又很特殊的檔案,特別是在shell指令碼開發和系統運維過程中會經常用這兩個檔案,因此作為Linux系統工程師,你必須瞭解這兩個檔案的區別和用法。 一、/dev/null的用法: 我們可以把/dev/null檔案看作”黑洞”,它非

此程式已經陷入無限迴圈中,C語言基礎教程迴圈

當一段程式碼需要執行多次時,您可能會遇到這種情況。通常,語句按順序執行:首先執行函式中的第一個語句,然後執行第二個語句,依此類推。 程式語言提供各種控制結構,允許更復雜的執行路徑。 迴圈語句允許我們多次執行語句或語句組。下面給出的是大多數程式語言中迴圈語句的一般形式

Python基礎教程第5章 條件, 循環和其它語句

like eba cti python基礎 word 沒有 positive while循環 pytho Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)] on win32

Solr基礎教程solrconfig.xml(三)

配置文件 multi listener 了無 files content esc lte 存儲 前面介紹過schema.xml的一些配置信息,本章介紹solrconfig.xml的配置,以及怎樣安裝smartcn分詞器和IK分詞器,並介紹主要的查詢語法。

[學習筆記—Objective-C]《Objective-C-基礎教程 第2版》第十一章 屬性

變量名 erl .text nonatomic syn split view 不能 -name 11.1 使用屬性值 @property float rainHandling; //表明此類具有float類型的屬性,其名稱為rainHandling

【Nutch基礎教程七】Nutch的2種執行模式:local及deploy

mapred nap ont nal servlet miss mos ant issue 在對nutch源碼執行ant runtime後,會創建一個runtime的文件夾。在runtime文件夾下有deploy和local 2個文件夾。 [[email 

RabbitMQ基礎教程基本使用篇

UNC 用戶名 eat TE utf-8 hms 隊列 over rgs RabbitMQ基礎教程之基本使用篇 最近因為工作原因使用到RabbitMQ,之前也接觸過其他的mq消息中間件,從實際使用感覺來看,卻不太一樣,正好趁著周末,可以好好看一下RabbitMQ的相關知識點

C++基礎知識動態庫靜態庫

www lar 而在 lib ont 運行程序 gpa prope 否則 一、 靜態庫與動態庫 庫(library),一般是一種可執行的二進制格式,被操作系統載入內存執行。 我們通常把一些公用函數制作成函數庫,供其它程序使用。函數庫分為靜態庫和動態庫 靜態庫和動態庫區

Git 基礎教程 創建版本庫

初始化 .com ima 版本 repo -a info 版本庫 新建 一,選擇一個合適的地方,創建空目錄,下面兩種方法都可 ① 手動新建 ② 使用命令: mkdir pythonwork 二,初始化,使目錄變成Git可管理的倉庫 執行: git

Git 基礎教程 撤銷修改

撤銷 pan 文件的 .com 分享 png 基礎教程 mit 技術 Git跟蹤並管理的是修改,而非文件。每次修改,如果不用git add到暫存區,那就不會加入到commit中, 要麽全部改完後,再add → commit ;要麽改一點,就add → commit。 撤

C/C++編譯器教程如何安裝vs,看了的人應該都會裝,只要不手殘

什麽 dia color tps image spa pad 開始 有一個 這很簡單,其實我覺得不用教,但是吧,你們總有很多問題,所以,就有了這個安裝教程。以上是廢話。首先下載vs編譯器得相關文件就是這兩個文件,上面的txt和下面的iso文件對的,先下載,然後,下載完成之

c++基礎語法構造函數和初始化表

沒有 參數表 編譯器 ima http 構造函數 struct 轉換 顯示 筆者剛系統的重學了c++的語法,看到構造函數和初始化表這塊,發現這塊語法有點復雜且很雜,怕以後忘記,於是寫下此篇,以後回憶之用。 c++構造函數 3、構造函數(constructor

Spring 基礎教程四:JavaBean基本配置詳解

一:xml 裝配JavaBean屬性含義: 1.id:指定該Bean 的唯一標識。 2.class:指定該Bean 的全限定名。 3.name:為該Bean 指定一到多個別名。多個別名可以用“,”和“;”分割。

C++基礎學習物件和類(7)

this指標 有時方法可能涉及到兩個物件,這種情況下需要用到this指標。比如Stock類中有一個方法是比較兩個物件的價格值,那麼方法定義如下: const Stock & topval(const Stock & s) const; const都是為了表示不對

C++基礎學習物件和類(6)

物件和類 主要內容: 面向物件程式設計與過程性程式設計 類的定義和實現 公有類和私有類 類的資料成員 類方法 建立和使用類物件 類的建構函式和解構函式 const成員函式 this指標 建立物件陣列 類作用域

C++基礎學習記憶體模型與名稱空間(5)

單獨編譯 將程式分為三個部分: 標頭檔案:包含結構宣告和使用這些結構的函式的原型。 原始碼檔案:包含與結構有關的函式的程式碼。 原始碼檔案:包含呼叫與結構相關的函式的程式碼。 一般儘量避免將函式定義或變數宣告放到標頭檔案中,防止出現重複定義的問題。 標頭