Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΊΠ»Π°ΡΡ LibClasses._1 ΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π» ΠΎΡ System. Object Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Equals ΠΈ ReferenceEquals ΠΈ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Equals, GetHashCode, GetType ΠΈ ToString. ΠΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΠΌΠ΅ΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ public, ΠΏΠΎΡΡΠΎΠΌΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΈΠ· Π»ΡΠ±ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΠΎ Π΅ΡΡΡ Π΅ΡΠ΅, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅ΡΠΎΠ΄, Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΠΌΡΠΉ ΠΎΡ ΠΊΠ»Π°ΡΡΠ° System. Object ΠΈ ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΈΠ΄Π΅Π½ Π»ΠΈΡΡ Π²Π½ΡΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΊΠ»Π°ΡΡΠ° LibClasses._1.
Π§ΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ Π² ΡΡΠΎΠΌ, Π½Π°Π±Π΅ΡΠΈΡΠ΅ Π²Π½ΡΡΡΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠ΅ΡΠΎΠ΄Π° Method ΠΊΠ»Π°ΡΡΠ° LibClasses._1 ΡΡΡΠ»ΠΊΡ Π½Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ this. (Ρ ΡΠΎΡΠΊΠΎΠΉ). ΠΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, IntelliSense ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡ ΡΠΏΠΈΡΠΎΠΊ, Π² ΠΊΠΎΡΠΎΡΡΠΉ, ΠΊΡΠΎΠΌΠ΅ ΠΏΠΎΠ»Ρ s ΠΈ ΡΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ
Π½Π°ΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², Π²Ρ
ΠΎΠ΄ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ MemberwiseClone. ΠΡΠΎ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ (Π½ΠΎ Π½Π΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ) ΠΌΠ΅ΡΠΎΠ΄, Π½Π΅ ΠΈΠΌΠ΅ΡΡΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΡΠ²Π»ΡΡΡΠΈΠΉΡΡ ΠΊΠΎΠΏΠΈΠ΅ΠΉ Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°-ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π°. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠ΅ΡΠΎΠ΄ MemberwiseClone ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΊΠ»Π°ΡΡΠ°, ΡΡΠΎ ΠΈ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π», ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Ρ Π² Π½Π΅Π³ΠΎ Π²ΡΠ΅ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠΎΠ»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°-ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π° Π΄ΠΎΡΠ»ΠΎΠ²Π½ΠΎ. ΠΡΠ»ΠΈ ΡΡΠ΅Π΄ΠΈ ΠΏΠΎΠ»Π΅ΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠ°-ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π° ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄ΡΡΠ³ΠΈΡ
ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠΎ ΡΡΠΈ ΡΡΡΠ»ΠΊΠΈ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΡΠ»ΠΎΠ²Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ. Π’Π°ΠΊΠ°Ρ ΠΊΠΎΠΏΠΈΡ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ «ΠΌΠ΅Π»ΠΊΠΎΠΉ» (shallow copy). ΠΠΎΠΏΡΡΡΠΈΠΌΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΊΠΎΠΏΠΈΡΡΡΡΡΡ ΠΈ ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ»Π°ΡΡΡΡ ΠΏΠΎΠ»Ρ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π°. ΠΡΠΈ ΡΡΠΎΠΌ Π² ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ ΠΏΠΎΠ»Ρ-ΡΡΡΠ»ΠΊΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΡΠΆΠ΅ Π½ΠΎΠ²ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ — Π½Π° ΠΊΠΎΠΏΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΡΠΎ «Π³Π»ΡΠ±ΠΎΠΊΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅» (deep copy).
ΠΠ»Ρ Π½Π°Ρ ΡΠ΅ΠΉΡΠ°Ρ Π²Π°ΠΆΠ½ΠΎ ΡΠΎ, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ MemberwiseClone Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ·Π½ΡΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΊΠ»Π°ΡΡΠ° LibClasses._1 — Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ° ΠΊΠ»Π°ΡΡΠ° System. Object, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° public. Π ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ ΠΌΠ΅ΡΠΎΠ΄ MemberwiseClone Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ private ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° System.Object. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ½ Π½Π΅ Π±ΡΠ» Π±Ρ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΊΠ°ΠΊΠΎΠΌΡ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ΄Ρ Π²Π½Π΅ ΠΊΠ»Π°ΡΡΠ° System.Object. ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ MemberwiseClone ΠΈΠΌΠ΅Π΅Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π΄ΠΎΡΡΡΠΏΠ° protected.
Π§Π»Π΅Π½ ΠΊΠ»Π°ΡΡΠ° Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ protected Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ Π²Π½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠ°, Π»ΠΈΠ±ΠΎ Π²Π½ΡΡΡΠΈ Π΅Π³ΠΎ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠ². Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΠ»ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ — ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ protected internal. Π§Π»Π΅Π½ ΠΊΠ»Π°ΡΡΠ° Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ protected internal Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°ΠΌ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΌ Π²Π½ΡΡΡΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΡΠ±ΠΎΡΠΊΠΈ, ΡΡΠΎ ΠΈ ΠΊΠ»Π°ΡΡ-ΠΏΡΠ΅Π΄ΠΎΠΊ.
ΠΠ»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ°Π±ΠΎΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° MemberwiseClone Π½Π°Π±Π΅ΡΠΈΡΠ΅ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π° Method ΠΊΠ»Π°ΡΡΠ° LibClasses._1.
public void Method ().
{.
_1 i1 = (_1)MemberwiseClone ();//Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠΏΠΈΠΈ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°.
System.Console.WriteLine (i1.Equals (this));//Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΏΠΈΠΈ Ρ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΠΎΠΌ.
}.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΏΠ° (_1). ΠΠ΅Π΄Ρ ΠΌΠ΅ΡΠΎΠ΄ MemberwiseClone Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΈΠΏΠ° object, Π° ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ i1 ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΠΈΠΏΡ _1.
ΠΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΊΠΎΠ΄ ΠΌΠ΅ΡΠΎΠ΄Π° Main ΠΊΠ»Π°ΡΡΠ° _2, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π²ΡΠ·ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π° inst_1a.Method.
static void Main (string[] args).
{.
LibClasses._1 inst_1a = new LibClasses._1();
inst_1a.Method ();
System.Console.ReadLine ();
}.
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΊΠΎΠ΄Π° Π±ΡΠ΄Π΅Ρ True Π² ΡΠ΅ΡΠ½ΠΎΠΌ ΠΎΠΊΠ½Π΅.