ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ (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;

ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅ΠΉ.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ