.net
オブジェクトの静的ReferenceEquals()
オブジェクトの静的Equals()
オブジェクトの例Equals()
operator==
には、同等性を比較する方法がいくつかあります。以下にそれらの違いと使用法を紹介します。
ReferenceEquals
ReferenceEquals は、参照型の参照が同じオブジェクトを指しているかどうかを比較するために使用されます。参照型のみを比較できます。値の型が渡されると、常に false が返されます。これは、値の型がパラメーターとして使用される場合、最初にボックス化されるためです。ボックス化された値の型が等しいことを参照する場合でも、依然として 2 つの異なるオブジェクトであるため、変数は を指します。異なるオブジェクトなので、常に false を返します。
int x = 10;
int y = 10;
bool b1 = object.ReferenceEquals(x,y);
参照型を比較している場合、2 つの参照が同じを指している場合、結果は必ず false を返します。 object の場合、それは true です。 Entity Class first -Public Classの人を定義します;
パブリック文字列FirstName
get { return _firstName; }}
プライベート文字列_lastName;
public string LastName
{ _lastNameを返す }値 ; }
}
public Person() { }
public Person(int personId, string firstName, string lastName)
{this._personId = personId
this._lastName = lastName;
}
}
呼び出しコード
人物 person1 = 新しい人物(1,"エドリック","リュー");
人物 person2 = 新しい人物(2, "メシ", "ルオ");人物 person3 = person2;
bool br1= object.ReferenceEquals(person1,person2);
bool br2 = object.ReferenceEquals(person2, person3);
最初のものは false を返し、2 つ目は true を返すことがわかります。では、オブジェクトの 1 つが null の場合、または両方のオブジェクトが null の場合はどうなるでしょうか?結果は false になりますが、両方とも null の場合はどうなりますか?結果は真実です。彼らは例外をスローしません。
MSDN にはいくつかのガイドラインがリストされています
浮動小数点型が関係する場合を除き、x.Equals(x) は true を返します。
x.Equals(y) は y.Equals(x) と同じ値を返します。
x.Equals(y) は、x と y の両方が NaN の場合に true を返します。
(x.Equals(y) && y.Equals(z)) は、x.Equals(z) が true を返す場合にのみ true を返します。
x.Equals(y) を連続して呼び出すと、x と y によって参照されるオブジェクトが変更されない限り、同じ値が返されます。
x.Equals(nullNothingnullptrnull 参照 (Visual Basic では Nothing)) は false を返します。 shotされたコードを見てください
privateint _personid; _firstName ;
パブリック文字列 FirstName
{get { return _firstName; }
set { _firstName = 値; }}
プライベート文字列 _lastName;
public string LastName
{get { return _lastName; = 値; }
}パブリック パーソン() { }パブリック パーソン(int personId, string firstName, string lastName){
this._personId = personId =this._lastName = lastName; ;
}
{
if (obj != null && obj は person)
{
person p = obj as Person;
}
else{
return false;
}
public override int GetHashCode()
returnbase.GetHashCode()^personId ;
}}
呼び出しコード
人物 person1 = 新しい人物(1,"エドリック","リュー");
人物 person3 = 新しい人物 (2, "メシ", "ルオ"); ;
結果として、最初のものが true で、2 番目のものが false になります。リロード中に例外が発生してはなりません。では、Person を継承するクラスがある場合、派生クラスをどのように比較すればよいでしょうか?
public クラス Student:People
{
private int _studentNumber;
public int StudentNumber
{
get { return _studentNumber; }
set { _studentNumber = 値; }
}
public Student() { }
public Student(int personId, string firstName, string lastName, int studentsNumber)
{
this.personId = personId;
this.FirstName = 名;
this.LastName = lastName;
this._studentNumber = 学生番号;
}
public override bool Equals(object obj)
{
if (obj != null && obj is Person)
{
Student s = obj as Student;
base.Equals(obj)&&StudentNumber==s.StudentNumber; を返します。
}
else
{
return false;
}
}
public override int GetHashCode()
{
returnbase.GetHashCode()^StudentNumber;
}
}
调用代码
生徒 s1 = 新しい生徒(1, "エドリック", "リュー", 1);
学生 s2 = 新しい学生(2, "Meci", "Luo", 2);
生徒 s3 = 新しい生徒(1, "エドリック", "リュー", 1);
Console.WriteLine(s1.Equals(s2));
Console.WriteLine(s1.Equals(s3));
私が必要としているのは、父クラスの Equals メソッドと、派生クラス内の新しい値を比較することだけです。種類比較の型に例の Equals がロードされている場合は、true を返すこともできます。
1、同じオブジェクトを参照する
2、2 つの null を比較する
3 ,重ロードEqualsの例メソッドを返すtrue
Student s1 = new Student(1, "Edrick", "Liu", 1);
学生 s2 = 新しい学生(2, "Meci", "Luo", 2);生徒 s3 = 新しい生徒(1, "エドリック", "リュー", 1);
学生 s4 = s3;
Console.WriteLine(object.Equals(s1,s3));
Console.WriteLine(object.Equals(s4, s3));
この 2 つは両方とも true で、ここでは静的な Equals には 1 つの領域があり、静的な Equals にはパラメータが null の場合に異常が発生します。重ロード==运算符,会発行什么
Student s1 = new Student(1, "Edrick", "Liu", 1);
学生 s2 = 新しい学生(2, "Meci", "Luo", 2);
生徒 s3 = 新しい生徒(1, "エドリック", "リュー", 1);
Console.WriteLine(s3==s4);
最初の 1 つは false、2 番目のは true です。これは、私たちの概念に適合しないため、Equals を再ロードするには == を再ロードする必要があり、同様に重畳する == も Equals を再ロードする必要があります。 setcoll[0]==co[0] は参照ですが、私たちの Equals 比較がオブジェクトの値である場合、最後の世代コードも使用できません。
== 算数
== 号算子のその他の例の Equals には大きな領域がありません、== は算数、Equals はメソッドです。他のものは上書きできます。 == の重畳に関しては、数値内の数値重畳を参照することができます。 null は false を返しますが、特別な値の種類を比較した場合は、最初から false を返します。 Equals: 静的なメソッドであり、上書きできません。Equals、比較参照、または比較値がない場合は、Equals メソッドを再ロードします。 、常用
== 算数: 参照することも、値を指定することもできます。

C#と.NETの関係は切り離せませんが、同じものではありません。 C#はプログラミング言語であり、.NETは開発プラットフォームです。 C#は、コードの書き込み、.NETの中間言語(IL)にコンパイルされ、.NET Runtime(CLR)によって実行されるために使用されます。

C#.NETは、複数のアプリケーション開発をサポートする強力なツールとライブラリを提供するため、依然として重要です。 1)C#は.NETフレームワークを組み合わせて、開発を効率的かつ便利にします。 2)C#のタイプの安全性とゴミ収集メカニズムは、その利点を高めます。 3).NETは、クロスプラットフォームの実行環境とリッチAPIを提供し、開発の柔軟性を向上させます。

c#.netisversatileforbothwebanddesktopdevelopment.1)forweb、useasp.netfordynamicapplications.2)fordesktop、equindowsorwpfforrichinterfaces.3)usexamarinforcross-platformdeveliment、enabling deshacrosswindows、

C#と.NETは、継続的な更新と最適化を通じて、新しいテクノロジーのニーズに適応します。 1)C#9.0および.NET5は、レコードタイプとパフォーマンスの最適化を導入します。 2).Netcoreは、クラウドネイティブおよびコンテナ化されたサポートを強化します。 3)ASP.Netcoreは、最新のWebテクノロジーと統合されています。 4)ML.NETは、機械学習と人工知能をサポートしています。 5)非同期プログラミングとベストプラクティスはパフォーマンスを改善します。

c#.netissuitableforenterprise-levelApplicationsとsystemduetoitsSystemdutyping、richlibraries、androbustperformance.

.NETでのC#のプログラミングプロセスには、次の手順が含まれます。1)C#コードの作成、2)中間言語(IL)にコンパイルし、3).NETランタイム(CLR)によって実行される。 .NETのC#の利点は、デスクトップアプリケーションからWebサービスまでのさまざまな開発シナリオに適した、最新の構文、強力なタイプシステム、および.NETフレームワークとの緊密な統合です。

C#は、Microsoftによって開発された最新のオブジェクト指向プログラミング言語であり、.NETフレームワークの一部として開発されています。 1.C#は、カプセル化、継承、多型を含むオブジェクト指向プログラミング(OOP)をサポートしています。 2。C#の非同期プログラミングは非同期を通じて実装され、適用応答性を向上させるためにキーワードを待ちます。 3. LINQを使用してデータ収集を簡潔に処理します。 4.一般的なエラーには、null参照の例外と、範囲外の例外インデックスが含まれます。デバッグスキルには、デバッガーと例外処理の使用が含まれます。 5.パフォーマンスの最適化には、StringBuilderの使用と、不必要な梱包とボクシングの回避が含まれます。

C#.NETアプリケーションのテスト戦略には、ユニットテスト、統合テスト、エンドツーエンドテストが含まれます。 1.単位テストにより、コードの最小ユニットがMSTEST、ヌニット、またはXUNITフレームワークを使用して独立して動作することを保証します。 2。統合テストでは、一般的に使用されるシミュレートされたデータと外部サービスを組み合わせた複数のユニットの機能を検証します。 3.エンドツーエンドのテストでは、ユーザーの完全な操作プロセスをシミュレートし、通常、セレンは自動テストに使用されます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

WebStorm Mac版
便利なJavaScript開発ツール

メモ帳++7.3.1
使いやすく無料のコードエディター

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 中国語版
中国語版、とても使いやすい

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター
