ΠΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ (virtual)
ΠΡΠ»ΠΈ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΠΌΠ΅ΡΠΎΠ΄Ρ Equals, ΠΏΠΎΠ΄ΡΡΠ°Π²ΠΈΠ² Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΡΡΠ»ΠΊΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ, Π½Π΅ ΡΠ²Π»ΡΡΡΠΈΠΉΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° LibClasses._1 ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°, ΡΠΎ ΠΎΠΏΡΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠ΅Π΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΈΠΏΠ° (_1)obj Π² ΠΊΠΎΠ΄Π΅ ΠΌΠ΅ΡΠΎΠ΄Π° Equals ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ, ΡΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ obj ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΡΠΈΠΏΡ LibClasses._1. ΠΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ, ΡΠΎ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½Π° ΠΎΡΠΈΠ±ΠΊΠ°. Π§ΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ Π² ΡΡΠΎΠΌ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
ΠΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ (virtual) (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
ΠΠ°Π±Π΅ΡΠΈΡΠ΅ inst1. (Ρ ΡΠΎΡΠΊΠΎΠΉ). Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ IntelliSense ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ»Π΅Π½ΠΎΠ² ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΊΠ»Π°ΡΡΠ° LibClasses._1. Π‘ΡΠ΅Π΄ΠΈ Π½ΠΈΡ Π»ΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅ΡΠΎΠ΄ Method ΠΎΠΏΠΈΡΠ°Π½ Π½Π°ΠΌΠΈ ΡΠ²Π½ΠΎ Π² ΠΊΠ»Π°ΡΡΠ΅. ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Equals, GetHashCode, GetType ΠΈ ToString ΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½Ρ ΠΎΡ ΠΊΠ»Π°ΡΡΠ° System. Object:
ΠΌΠ΅ΡΠΎΠ΄ GetHashCode Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠΈΠΏΠ° int, «Π½ΡΠΌΠ΅ΡΡΡΡΠ΅Π΅» Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ, Π²ΠΎΠΎΠ±ΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΊΠ»Π°ΡΡΠ° Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°,.
ΠΌΠ΅ΡΠΎΠ΄ GetType Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΈΠΏΠ° System.Reflection.Type, «ΠΎΡΡΠ°ΠΆΠ°ΡΡΠ΅Π³ΠΎ» (ΠΎΡΡΡΠ΄Π° reflection) Π² ΡΠ²ΠΎΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π°Ρ ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°Ρ Π²ΡΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΊΠ»Π°ΡΡΠ°, ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΌΠ΅ΡΠΎΠ΄ ToString Π΄Π°Π΅Ρ «ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΠΎΠ΅» ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ° — ΠΈΠΌΡ ΠΊΠ»Π°ΡΡΠ° Π΄Π»Ρ ΡΡΡΠ»ΠΎΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ² (ΠΊΡΠΎΠΌΠ΅ string) ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠΈΠΏΠΎΠ²-Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°, Π½Π°Π±ΡΠ°Π² Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ Main ΠΊΠ»Π°ΡΡΠ° _2 Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΡΠΎΠΊΡ.
System.Console.WriteLine (inst1.ToString ());
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΡΡΠΎΠΊΠ° LibClasses._1. Π’ΠΎ ΠΆΠ΅ ΠΈ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΌΠ΅ΡΠΎΠ΄Π° ToString Π΄ΡΡΠ³ΠΈΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ inst_1a.ToString ().
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π±ΠΎΠ»Π΅Π΅ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ Equals.
ΠΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΎΠ½ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΡΠΆΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΠΌ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΈΠΏΠ° object, Π° Π½Π΅ Π΄Π²Π°, ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΅Π·ΠΊΠ°. Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Equals, Π²Π½Π΅ΡΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° _2.
class _2.
{.
static LibClasses._1 inst1 = new LibClasses._1();
static void Main (string[] args).
{.
LibClasses._1 inst_1a = new LibClasses._1();
System.Console.WriteLine (inst1.Equals (inst_1a));
System.Console.ReadLine ();
}.
}.
ΠΠ΄Π΅ΡΡ Π΄Π»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² inst1 ΠΈ inst_1a ΠΊΠ»Π°ΡΡΠ° LibClasses._1 Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Equals Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π΅Π³ΠΎ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΅Π·ΠΊΠ°. ΠΠ½ ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ inst1 ΠΈ inst_1a. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ, ΠΊΠ°ΠΊ ΠΈ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ΅ ΠΊΠΎΠ΄Π°, Π±ΡΠ΄Π΅Ρ False. ΠΠΏΡΡΡ ΠΆΠ΅, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΌΠ΅ΡΠΎΠ΄Π° Equals ΠΊΠ»Π°ΡΡΠ° System. Object ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅.
ΠΠ·ΠΌΠ΅Π½ΠΈΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° LibClasses._1 Π² ΠΌΠΎΠ΄ΡΠ»Π΅ LibCode, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π² Π½Π΅Π³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Equals.
public override bool Equals (object obj).
{.
return s == ((_1)obj).s;
}.
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊ ΠΊΠΎΠ΄Ρ Π‘Π»ΡΠΆΠ΅Π±Π½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ override ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ Equals ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΌ (virtual) ΠΈ ΡΠΆΠ΅ ΠΎΠΏΠΈΡΠ°Π½ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅-ΠΏΡΠ΅Π΄ΠΊΠ΅. ΠΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° Equals Π² ΠΊΠ»Π°ΡΡΠ΅ System. Object) Π΅Π³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ»ΡΠΆΠ΅Π±Π½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ virtual. ΠΠΎ Π²ΡΠ΅Ρ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°Ρ , ΠΏΠ΅ΡΠ΅ΠΊΡΡΠ²Π°ΡΡΠΈΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°, ΡΠ΅ΡΠΌΠΈΠ½ virtual Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ override.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ return ΡΠΆΠ΅ Π²ΡΡΡΠ΅ΡΠ°Π»ΡΡ Π½Π°ΠΌ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π²Π΅ΡΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄Π° Main. Π’Π΅Π»ΠΎ Π½Π°ΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° Equals Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ»ΡΠΆΠ΅Π±Π½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ return. ΠΡΠ±ΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΡΠΈΠΏΠ°, ΠΎΡΠ»ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΎΡ void, (Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ ΡΠΈΠΏ bool) ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ return. ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ return Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·Π°Π½ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°. ΠΠΏΠ΅ΡΠ°ΡΠΎΡ return ΠΏΡΠ΅ΠΊΡΠ°ΡΠ°Π΅Ρ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π°, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΡΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ Π² ΡΠ΅Π»Π΅ ΠΌΠ΅ΡΠΎΠ΄Π°. Π ΠΌΠ΅ΡΠΎΠ΄Π΅ ΡΠΈΠΏΠ° void ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ return ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠΏΡΡΠ΅Π½. ΠΠΎ Π΅ΡΠ»ΠΈ return ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ ΡΠΈΠΏΠ° void, ΡΠΎ Π΄Π°Π»ΡΡΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π² ΡΡΠΎΠΉ ΡΠΎΡΠΊΠ΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ°Π΅ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π°.
ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ s == ((_1)obj).s Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° bool ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π² Π½Π΅ΠΌ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡΡΡ Π΄Π²Π΅ ΡΡΡΠΎΠΊΠΈ — ΠΏΠΎΠ»Π΅ s ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ ΠΏΠΎΠ»Π΅ s ΠΎΠ±ΡΠ΅ΠΊΡΠ°-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° obj. Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ true ΠΏΡΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ ΡΡΡΠΎΠΊ ΠΈ false ΠΏΡΠΈ ΠΈΡ ΠΎΡΠ»ΠΈΡΠΈΠΈ.
ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΌΠ΅ΡΠΎΠ΄Π° Equals Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° obj Π±ΡΠ΄Π΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° LibClasses._1 ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°. ΠΠ±ΡΠ΅ΠΊΡ-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ obj ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ object. Π£ ΠΊΠ»Π°ΡΡΠ° object Π½Π΅Ρ ΠΏΠΎΠ»Ρ s. ΠΠΎΡΡΠΎΠΌΡ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΠΏΠΎΠ»Ρ s ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ° obj ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠΈΠΏΠ° LibClasses._1.
ΠΠΎΡΠ»Π΅ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ ΡΠ΅Π΄Π°ΠΊΡΠΈΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°. ΠΠ½ Π±ΡΠ΄Π΅Ρ True. ΠΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ (overriding) Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Equals ΠΏΡΠΈΠ½Π΅ΡΠ»ΠΎ ΡΠ²ΠΎΠΈ ΠΏΠ»ΠΎΠ΄Ρ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π΅ΡΠ»ΠΈ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡ ΠΊ ΠΊΠΎΠ΄Ρ ΠΊΠ»Π°ΡΡΠ° _2, Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π²ΡΠ·ΠΎΠ² Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° inst1.Equals (inst_1a) Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° LibClasses._1.Equals (inst1, inst_1a), ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠΆΠ΅ True. ΠΡΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π²Π½ΡΡΡΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Equals ΠΊΠ»Π°ΡΡΠ° System. Object, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ»ΠΈ (!), Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π΅Π³ΠΎ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΅Π·ΠΊΠ°, Π½Π°ΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ. Π ΡΡΠΎΠΌ ΠΌΠΎΠ³ΡΡΠ΅ΡΡΠ²ΠΎ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². ΠΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ² Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ Equals, ΠΌΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π±ΠΎΡΡ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΈ ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΠΌΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅ΡΡΡ — ΠΊΠΎΠ΄Π° ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Equals!
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ ΠΊΠΎΠ΄Π°.
ΠΠ°ΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π°ΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄ Equals ΠΊΠ»Π°ΡΡΠ° LibClasses._1, ΠΈΠΌΠ΅Π΅Ρ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Π΄Π²Π° Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠ°.
ΠΡΠ»ΠΈ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΠΌΠ΅ΡΠΎΠ΄Ρ Equals Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ null, ΡΠΎ Π΅ΡΡΡ ΠΈΡΠΏΡΡΠ°ΡΡ ΠΊΠΎΠ΄ inst1.Equals (null), ΡΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ (ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅). Π ΠΌΠ΅ΡΠΎΠ΄Π΅ Equals ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ obj ΠΈΠΌΠ΅Π΅Ρ ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π½Π΅ ΡΠ°Π²Π½ΠΎΠ΅ null. ΠΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ, ΠΌΠ΅ΡΠΎΠ΄ Equals, ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ false. ΠΠ΅Π΄Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΡΠ°Π· ΠΎΠ½ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΡΡΠ»ΠΊΡ null.
ΠΡΠ»ΠΈ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΠΌΠ΅ΡΠΎΠ΄Ρ Equals, ΠΏΠΎΠ΄ΡΡΠ°Π²ΠΈΠ² Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΡΡΠ»ΠΊΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ, Π½Π΅ ΡΠ²Π»ΡΡΡΠΈΠΉΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° LibClasses._1 ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°, ΡΠΎ ΠΎΠΏΡΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠ΅Π΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΈΠΏΠ° (_1)obj Π² ΠΊΠΎΠ΄Π΅ ΠΌΠ΅ΡΠΎΠ΄Π° Equals ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ, ΡΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ obj ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΡΠΈΠΏΡ LibClasses._1. ΠΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ, ΡΠΎ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½Π° ΠΎΡΠΈΠ±ΠΊΠ°. Π§ΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ Π² ΡΡΠΎΠΌ, ΠΎΠΏΠΈΡΠΈΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΊ ΠΌΠ΅ΡΠΎΠ΄Ρ Equals ΡΡΡΠΎΠΊΡ Ρ Π½ΠΎΠ²ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ°, ΠΎΡΠ»ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΎΡ LibClasses._1, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, int i = 0; ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° Equals Π² ΡΠΎΡΠΌΠ΅ inst1.Equals (i).
ΠΠ»Ρ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° Equals ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ Π² Π²ΠΈΠ΄Π΅.
return obj≠null && GetType ()==obj.GetType () && s == ((_1)obj).s;
Π‘Π΄Π΅Π»Π°ΠΉΡΠ΅ ΡΡΠΎ ΠΈ Π²Π½ΠΎΠ²Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΊΠΎΠ΄Π° Π² Π΄Π²ΡΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΡΠΈΡΡΠ°ΡΠΈΡΡ .
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΠΏΠ΅ΡΠ°ΡΠΎΡ obj≠null Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true, Π΅ΡΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π½Π΅ ΡΠ°Π²Π½Ρ, ΠΈ false Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅.
Π‘Π»ΡΠΆΠ΅Π±Π½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ && (Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Π°ΠΌΠΏΠ΅ΡΡΠ°Π½Π΄) ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ «ΠΈ» (and) — Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true, ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΎΠ±Π° ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π° ΡΠ°Π²Π½Ρ true. ΠΡΠΈ ΡΡΠΎΠΌ Π΅ΡΠ»ΠΈ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ obj≠null Π²Π΅ΡΠ½Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ false, Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π°. Π’ΠΎ ΠΆΠ΅, Π΅ΡΠ»ΠΈ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ GetType ()==obj.GetType () Π²Π΅ΡΠ½Π΅Ρ false. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠΎΠΌΡ ΡΠ²ΠΎΠΉΡΡΠ²Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ && ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΌ ΡΡΠ½ΡΠΈΡΡΡΡΠΈΠΌ (short-circuit) ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌ. ΠΡΡΠ³Π°Ρ Π²Π΅ΡΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ & (ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΠΉ Π°ΠΌΠΏΠ΅ΡΡΠ°Π½Π΄) ΡΠ°ΠΊΠΈΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π²ΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ² Π²Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ². ΠΡΠ»ΠΈ Π² Π½Π°ΡΠ΅ΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΡΠ½ΡΠΈΡΡΡΡΠΈΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ && Π½Π° ΠΎΠ±ΡΡΠ½ΡΠΉ &, ΡΠΎ ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ Π²ΡΡ ΠΎΠ΄ΠΈΡΡ Π½Π° ΠΏΡΠ΅ΠΆΠ½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡΡ inst1.Equals (null) ΠΈ inst1.Equals (i). ΠΡΠΏΡΡΠ°ΠΉΡΠ΅ ΠΈ ΠΏΠΎΠ΄ΡΠΌΠ°ΠΉΡΠ΅, ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠΎ ΡΠ°ΠΊ.
ΠΡΠΎΠΌΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ «ΠΈ» Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ & ΠΈ &&, Π² C# ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π΅ΡΠ΅ Π΄Π²Π΅ Π±ΠΈΠ½Π°ΡΠ½ΡΠ΅ (Ρ Π΄Π²ΡΠΌΡ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π°ΠΌΠΈ) Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ:
«ΠΈΠ»ΠΈ» (Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈΠ»ΠΈ or) Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ | ΠΈ || Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true, Π΅ΡΠ»ΠΈ Ρ ΠΎΡΡ Π±Ρ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ² true.
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ°Π·Π½ΠΎΡΡΠΈ (xor — ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠ΅Π΅ «ΠΈΠ»ΠΈ», ΠΈΠ»ΠΈ eXclusive OR) Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ ^ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true, Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ² true.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ½Π°ΡΠ½ΠΎΠ³ΠΎ (Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅ΡΠ°Π½Π΄) ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΎΡΡΠΈΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²ΠΎΡΠΊΠ»ΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ Π·Π½Π°ΠΊ !.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ &, | ΠΈ ^ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊ ΡΠ΅Π»ΡΠΌ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π°ΠΌ. Π’ΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π΄Π΅ΠΉΡΡΠ²ΡΡΡ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ — ΠΎΠΏΠ΅ΡΠΈΡΡΡΡ Π½Π°Π΄ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠΈ Π±ΠΈΡΠΎΠ², ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΡΡΠΎΡΡ ΡΠ΅Π»ΡΠ΅ ΡΠΈΡΠ»Π°-ΠΎΠΏΠ΅ΡΠ°Π½Π΄Ρ Π² Π±ΠΈΠ½Π°ΡΠ½ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ. Π£Π½Π°ΡΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ~ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡ «ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅» ΡΠ΅Π»ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π° (Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΈΡΠ»ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π² ΡΡΠΌΠΌΠ΅ Ρ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π»ΠΎ Π±Ρ Π²ΡΠ΅ Π±ΠΈΡΡ, ΡΠ°Π²Π½ΡΠΌΠΈ Π΅Π΄ΠΈΠ½ΠΈΡΠ΅).
ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ GetType ()==obj.GetType () Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true ΡΠΎΠ»ΡΠΊΠΎ, Π΅ΡΠ»ΠΈ ΡΠΈΠΏ ΠΊΠ»Π°ΡΡΠ° Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ ΡΠΈΠΏ ΠΊΠ»Π°ΡΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ°-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° obj ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ. ΠΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠ΅, Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΠΌΠΎΠ΅ Π½Π° ΡΠΈΠΏΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π² Π»ΠΈΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ obj Π±ΡΠ» ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° LibClasses._1 ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°. Π’ΠΎΠ³Π΄Π° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ obj≠null && GetType ()==obj.GetType () Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ obj is _1. ΠΡΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true, Π΅ΡΠ»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ obj Π½Π΅ ΡΠ°Π²Π΅Π½ null ΠΈ Π΅ΡΠ»ΠΈ Π΅Π³ΠΎ ΡΠΈΠΏ «ΡΠ²ΠΎΠ΄ΠΈΡΡΡ» ΠΊ ΡΠΈΠΏΡ LibClasses._1 (ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°). ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΡΡ Π²Π΅ΡΡΠΈΡ ΠΊΠΎΠ΄Π° Π² ΡΠ°Π·Π½ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠ°Ρ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π° Equals. ΠΠ΄Π½Π°ΠΊΠΎ Π½Π°Π΄ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° ΠΊΠΎΠ΄Π° ΠΌΠ΅ΡΠΎΠ΄Π° Equals (Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ is) ΡΠ°Π²Π½ΡΠΌΠΈ ΠΎΠΊΠ°ΠΆΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠ°Π·Π½ΡΡ ΡΠΈΠΏΠΎΠ² (Ρ ΠΎΡΡ ΠΈ ΠΈΠΌΠ΅ΡΡΠΈΠ΅ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΏΡΠ΅Π΄ΠΊΠ° LibClasses._1) Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠΌΠΈ s. ΠΠΎΡΡΠΎΠΌΡ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΊΠΎΠ΄Π°.
return obj≠null && GetType ()==obj.GetType () && s == ((_1)obj).s;
ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½Π΅ΠΉ.