c#?==操作符和equals方法的使用區(qū)別
在C#中,"=="操作符和Equals()方法有著不同的用途和行為。
==操作符判斷的是堆棧中的值,Equlas判斷的是堆中的值。
C#提供值類型和引用類型,值類型存儲在棧上,故用==判斷是直接判斷其值是否相等,因為值類型不存在堆中的數(shù)據(jù),因此值類型的Equals也是判斷數(shù)據(jù)。即,對于值類型而言,==與Equals相同,均是判斷其值是否相等。
對于引用類型而言,其棧中存儲的是對象的地址,那么==就是比較兩個地址是否相等,即是否指向同一個對象;Equals函數(shù)則是比較兩個對象在堆中的數(shù)據(jù)是否一樣,即兩個引用類型是否是對同一個對象的引用。
"=="操作符:
- "“操作符用于比較兩個對象的值是否相等。當(dāng)使用”"操作符比較兩個引用類型的對象時,它會比較它們的引用是否指向相同的內(nèi)存地址。
- 對于值類型(如int、double等),"=="操作符比較它們的實際值。如果值相等,則返回true,否則返回false。
Equals()方法:
- Equals()方法是一個虛擬方法,定義在System.Object類中,因此所有的類都可以使用它。
- 在默認(rèn)情況下,Equals()方法的行為與"=="操作符相同,即它用于比較兩個對象的值是否相等。
- 但是,類可以重寫Equals()方法以改變其行為。重寫Equals()方法通常用于自定義類來定義自定義的相等性比較規(guī)則。
總結(jié):
- "=="操作符用于比較引用類型的對象的引用或值類型的實際值。
- Equals()方法用于比較對象的值是否相等,且可以被重寫以自定義相等性比較規(guī)則。
因此,一般情況下,對于引用類型,應(yīng)該使用"=="操作符來比較對象的引用,而對于值類型或者自定義類,應(yīng)該使用Equals()方法來比較它們的值。
重寫equals方法只要兩個對象的字段的值相等就相等不比較對象的引用地址
沒重寫前,兩個對象雖然字段的值相同,但是為兩個不同的對象,引用地址不同,結(jié)果為不相等。
public class stu{
public int id;
public string name;
}
internal class Program
{
private static void Main(string[] args)
{
Console.WriteLine("c#equals和==的區(qū)別");
// int c = 1;s
stu a = new stu()
{
id = 1,
name = "pzx"
};
stu b = new stu()
{
id = 1,
name = "pzx"
};
if (a.Equals(b))
{
Console.WriteLine("a等于b");
}
else
{
Console.WriteLine("a不等于b");
}
}
}
重寫后(值判斷,不比較引用地址)輸出相等
internal class stu
{
public int id;
public string name;
/// <summary>
/// 重寫equal方法
/// </summary>
/// <param name="stu"></param>
/// <returns></returns>
public override bool Equals(object? obj)
{
if (obj == null) return false;
stu stu1 = (stu)obj;
Type type = obj.GetType();
var property = type.GetFields();
foreach (var prop in property)
{
if (prop.GetValue(this).Equals(prop.GetValue(stu1)))
{
return true;
}
}
return false;
}
}到此這篇關(guān)于c# ==操作符和equals方法的使用區(qū)別的文章就介紹到這了,更多相關(guān)c# ==操作符和equals方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C# 使用 GDI+ 實現(xiàn)添加中心旋轉(zhuǎn)(任意角度)的文字
這篇文章主要介紹了C# 使用 GDI+ 實現(xiàn)添加中心旋轉(zhuǎn)(任意角度)的文字,需要的朋友可以參考下2018-04-04
C#實現(xiàn)將HTML網(wǎng)頁或HTML字符串轉(zhuǎn)換為PDF
將HTML轉(zhuǎn)換為PDF可實現(xiàn)格式保留、可靠打印、文檔歸檔等多種用途,滿足不同領(lǐng)域和情境下的需求,所以本文就來介紹一下如何使用C#實現(xiàn)將HTML網(wǎng)頁或HTML字符串轉(zhuǎn)換為PDF,有需要的可以參考下2024-01-01

