首頁  >  文章  >  後端開發  >  C# 物件比較

C# 物件比較

PHPz
PHPz原創
2024-09-03 15:03:50908瀏覽

C# 物件比較對兩個相似類型的物件進行大小寫敏感的關聯,並傳回一個值來證明一個物件是否不完全、等於或比另一個物件更突出。 C# 有很多管理員,其中一些用於查看值。這是程式設計時非常基本的任務——檢查至少兩種品質如何相互識別。

文法:

Public int compare(object s, object p)

哪裡,

S 和 p 是要比較的第一個和第二個物件。

它傳回一個整數值,表示物件 s 和 p 的值。

如何在 C# 中比較物件?

現在我們看到一個關於 C# 中物件比較如何運作的範例。

範例#1

using System;
using System.Collections.Generic;
class Someone
{
public string Name { get; set; }
}
class Ex
{
static void Main()
{
var someone = new List<Someone> {
new Someone { Name = "Spandana Rao" } };
Console.WriteLine(
someone.Contains(
new Someone { Name = "Spandana Rao" }));
}
}

輸出:

C# 物件比較

在上面的程式中,程式產生 false 輸出。為了實現這一點,我們需要在不廢除 Equals 技術或執行 IEquatable 的情況下進行排序。在介面中,您放棄瞭如何分析您的兩個範例的權力,並承認 CLR 的預設關聯繫統。如果您的排序是引用類型(類別),您將獲得字元平衡,如果您的排序是價值類型(結構),您將獲得尊重平衡。

當您查看引用類型的兩個案例(例如我的第一個模型中的 Person 類型)時,CLR 會將引用與項目進行對比,以檢查引用是否突出顯示相似的文章。如果兩個引用類型的參考集中於受監督堆疊上的相似項,則它們可能是等效的。如果引用是唯一的,那麼物件就不等價——無論它們的欄位是否無法區分。

C# 值相等是一個交替循環,但更容易理解。價值一致性採用價值排序的所有出現字段,並將它們考慮到單一請求中第二個範例的場合字段。我認為尊重平衡的運作方式與大多數設計師期望所有對應檢查應有的方式相同。

每次您在參考類型上使用並行公平管理器 (==) 或等於技術時,您都會呼叫 Object。等同於所提到的場合。如果您希望提供一些獎勵平衡,最明顯的活動是取代 System.Object.Equals 並利用此技術來考慮兩個事件的欄位。這種方法不是型別安全的。由於 Equals 策略承認 Object 類型的爭用,因此我們無法確保傳遞給此技術的事件是 Person。

這個介面的設計是為了幫助我們解決我們所面臨的健康問題。顯而易見,這個介面使我們能夠特定地取代目前的 Equals 策略。由於我們有一個專門的等於策略,因此在我們這種類型的兩個場合中進行的任何通訊檢查都將受到類型保護和無效安全。在 Equals 的預設取代執行中使用 as 強制轉換允許我們傳遞 Person 或 invalid 的實例以及我們對 IEquatable 的使用。等於返回虛假,這保證了我們的策略不會因無效而失敗。

GetHashCode 策略是人格股權檢查的基本部分。哈希碼是表示當前範例情況的基本值。本質上,如果兩個案例具有相似的雜湊碼,則它們在尊重方面可能是相同的。然而,如果兩篇文章沒有相似的雜湊碼,那麼它們的價值肯定不相等。如果哈希碼不協調,這種方法允許我們透過不呼叫 Equals 來考慮程式碼和顯示支援。關於為專案範例建立雜湊碼的適當或最理想的方法,這還需要再討論一天。我們在這裡所做的就是取得兩個互質數(23 和 37),並利用它們來控制事件狀態的雜湊碼,以顯示最後一個基本值。再說一次,現在使用者如何運作並不重要,重要的是我們給予一些執行,這樣我們就可以獲得GetHashCode可以給予的展示獎勵。目前我們有一個類別可以適當地提供一些好處對應語意。

結論

因此,我想總結一下,因為基礎 Object.等於技術被設定為虛擬的,您可以在任何從 Object 獲取的類別中取代它,這很好,一切。請注意這如何改變 p1.Equals(p3) 的結果,因為它目前查看的是姓名和年齡而不是引用。

以上是C# 物件比較的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:C# URL 編碼下一篇:C# URL 編碼