public Tree(){}
// ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ new ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π·Π΄Π΅ΡΡ ΡΠ²Π½ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΊΡΡΡΡ
// Π±Π°Π·ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ
new public void BearFruit() {
Console.WriteLine("Tree fruit is:->Mango");
}
}
public class PlantEX {
public PlantEX(){}
public static void Main(String[] args) {
Plant p = new Plant();
p.BearFruit(); // Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°
Tree t = new Tree();
t.BearFruit(); // Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠ»Π°ΡΡΠ° Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°
((Plant)t).BearFruit(); // Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°,
// ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°.
}
}
}
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΡΠ²ΠΎΠ΄:
Generic plant fruit
Tree fruit is:->Mango
Generic plant fruit
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠΊΡΡΡΠΈΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈ ΠΎΠ±ΡΠΊΠ½ΠΎΠ²Π΅Π½Π½ΡΠΌ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌΠΎΠΌ. ΠΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ°-Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. ΠΠΎ Π²ΡΠ΅ΠΌΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ Π°Π²ΡΠΎΡ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ», ΡΡΠΎ ΡΠΎΠΊΡΡΡΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π±Π΅Π· ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ, Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ new Π½Π΅ Π±ΡΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ.
Π§ΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ virtual ΠΈ override. ΠΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ, Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ virtual. Π§ΡΠΎΠ±Ρ ΡΠ΅Π°Π»ΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΈΡ , Π² ΠΊΠ»Π°ΡΡΠ΅-Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ override. ΠΠΈΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠ»Π°ΡΡΠ° Tree, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΠΉ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ:
class Tree Plant {
public Tree() {}
public override void Fruit() {
Console.WriteLine("Tree fruit is:->Mango");
}
}
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΡΠ²ΠΎΠ΄.
Generic plant fruit
Tree fruit is:->Mango
Tree fruit is:->Mango
ΠΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅ΡΡ, Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΠ°ΠΌΡΠΉ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Fruit() Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ cΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ((Plant)t).BearFruit(), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ»Π°ΡΡ ΡΠ°Π½Π΅Π΅ Π΄Π»Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ Fruit() Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ new ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΡΠΎΠΊΡΡΡΠΈΡ Π»ΡΠ±ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½Π½ΡΡ ΠΈΠ· Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΡΠ»Π΅Π½ΠΎΠ² Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠΉ ΡΠΈΠ³Π½Π°ΡΡΡΡ.
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠΌΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ sealed. Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠ·Π΅ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Plant Π½Π° public sealed class Plant ΠΈ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Tree Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΠΎΡ Π½Π΅Π³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ.
C# Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° native. Π Java ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ native ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠΌ ΠΎΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΡΠ·ΡΠΊΠ΅. ΠΡΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΡΠΎΠ±Ρ ΠΌΠ΅ΡΠΎΠ΄ Π±ΡΠ» Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΌ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅. ΠΠ»ΠΈΠΆΠ°ΠΉΡΠΈΠΌ ΠΊ ΡΡΠΎΠΌΡ ΡΠΈΠΏΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ extern. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ extern ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ, ΡΡΠΎ ΠΊΠΎΠ΄ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ Π²ΠΎΠ²Π½Π΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ DLL). ΠΠ΄Π½Π°ΠΊΠΎ Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Java, Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ abstract Π² ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ Ρ Π½ΠΈΠΌ. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΎΠ·Π½Π°ΡΠ°ΡΡ Π΄Π²Π΅ ΠΏΠΎΡ ΠΎΠΆΠΈΠ΅, Π½ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π²Π΅ΡΠΈ. ΠΠΈΠΆΠ΅ ΠΊΠ»Π°ΡΡ Plant ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ extern:
public class Plant : IfruitHaver {
public extern int See();
public Plant(){}
public void Fruit() {
Console.WriteLine("Generic plant fruit");
}
}
ΠΡΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΠΌΡΡΠ»Π° Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠ° DllImport Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π²Π½Π΅ΡΠ½Π΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Π°ΡΡΠΈΠ±ΡΡΡ Π±ΡΠ΄ΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΠΏΠΎΠ·ΠΆΠ΅ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΠ°Π»ΡΠ½Π΅ΠΉΡΠΈΠΉ ΠΊΠΎΠ΄ Π΄Π΅Π»Π°Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ See ΡΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π° ΡΠ΅ΡΡΡΡΠΎΠΌ User32.dll:
public class Plant: IfruitHaver {
[System.Runtime.InteropServices.DllImport("User32.dll)]
public static extern int See();
public Plant(){}
public void Fruit() {
Console.WriteLine("Generic plant fruit");
}
}
ΠΠ΄Π΅ΡΡ ΠΌΠ΅ΡΠΎΠ΄ See() ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ ΠΊΠ°ΠΊ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ. ΠΡΡΠΈΠ±ΡΡ DllImport ΡΡΠ΅Π±ΡΠ΅Ρ ΡΡΠΎΠ³ΠΎ ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ
ΠΠΎΠΊΠ° Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π²Π΅ΡΡΠΈΠΈ C# ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ»ΠΎΠ² transient, volatile ΠΈΠ»ΠΈ synchronized. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΡΠ΄ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ², ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ SDK .NET Π΄Π»Ρ ΠΈΠΌΠΈΡΠ°ΡΠΈΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ. C# ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π°ΡΡΠΈΠ±ΡΡ NonSerialized, ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ Ρ ΠΏΠΎΠ»ΡΠΌΠΈ ΠΊΠ»Π°ΡΡΠ°, Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ Java transient, ΡΡΠΎΡ Π°ΡΡΠΈΠ±ΡΡ ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²Π°Π½, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Π² Π±ΡΠ΄ΡΡΠΈΡ Π²Π΅ΡΡΠΈΡΡ .
Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π² C# Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ»ΠΎΠΆΠ½Π΅Π½Π° (Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΄ΠΎΠ΅ΠΌΠΊΠ°) ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Π΅Π΅ Π°Π½Π°Π»ΠΎΠ³ΠΎΠΌ Π² Java. Π ΠΎΠ±ΡΠ΅ΠΌ, Π»ΡΠ±ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊΠΎ Π²ΡΠ΅ΠΌ ΡΠ»Π΅Π½Π°ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠΌΠ΅Π΅ΡΡΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΠ΄ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠ΅ΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΊΠΈΡ ΡΡΠ΅Π΄ΡΡΠ², ΠΊΠ°ΠΊ Monitors. ΠΠ½ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄Π΅Π»Π°ΡΡ ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ°Ρ SyncBlocks, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈ Π±Π»ΠΎΠΊΠΎΠ² ΠΊΠΎΠ΄Π°; ΡΠΏΠΈΡΠΎΠΊ ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠ° ReaderWriterLock, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΎΠ±ΡΠ°Π·Π΅Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΈΡΠ°ΡΠ΅Π»Ρ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΠΈΡΠ°ΡΠ΅Π»Π΅ΠΉ; ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Mutex, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΠΌΠ΅ΠΆΠΏΡΠΎΡΠ΅ΡΡΠ½ΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ; ΠΈ System.Threading.Interlocked, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΡΠ΅ΡΠ΅Π· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΠ΅ΡΠ²ΡΠΉ ΡΠ°Π³ ΠΊ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π² C# ΡΠΎΡΡΠΎΠΈΡ Π² ΡΡΡΠ»ΠΊΠ΅ Π½Π° ΡΠ±ΠΎΡΠΊΡ System.EnterpriseServices.dll. ΠΠ½ΡΡΡΡΠΊΡΠΈΡ lock(<expression>) {// Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°} ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠΌ Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ, ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ Π² C#. ΠΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ, ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ Π² Java, Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π²Π·Π°ΠΈΠΌΠ½ΠΎ ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠ΅Π³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° <ref>. ΠΡΠ΅ ΠΏΠΎΠΏΡΡΠΊΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ <expression> Π±ΡΠ΄ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Ρ, ΠΏΠΎΠΊΠ° ΠΏΠΎΡΠΎΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΎΠΉ Π½Π΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ Π΅Π΅. ΠΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π»ΠΈΠ±ΠΎ this, Π»ΠΈΠ±ΠΎ System.Type, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ Type ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π·Π°ΡΠΈΡΠ°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ System.Type Π±ΡΠ΄Π΅Ρ Π·Π°ΡΠΈΡΠ°ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅.
ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ: catch, finally, throw, throws, tryΠΡΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΡΠ²Π»ΡΡΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ Π² ΠΎΠ±ΠΎΠΈΡ ΡΠ·ΡΠΊΠ°Ρ , Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ throws, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ Π² C#. ΠΡΠ³Π°ΡΡΠ°Ρ Π²Π΅ΡΡ Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ throws ΠΈΠ· Java ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, Π½Π΅ Π·Π½Π°Ρ ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠΎΠΆΠ΄Π°ΡΡ. ΠΠΎΠΆΠ½ΠΎ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠΈΡΡΡΡ Π·Π°Π²Π΅ΡΠ΅Π½ΠΈΡΠΌΠΈ, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π²ΡΠ΅, ΠΈΠΌΠ΅ΡΡΠΈΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΊ Π΄Π΅Π»Ρ, ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π±ΡΠ΄Π΅Ρ ΠΈΠ½Π°ΡΠ΅ ΠΎΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΠΎ Π²ΡΠ΅Ρ Π½Π΅ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠ΅Π½Π½ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡΡ . Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΎΠ΄Π° ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ Π² C# Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ. ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΌ ΡΠ±ΠΎΡΠΊΠΈ, ΠΆΠ΅Π»Π°ΡΡΠ΅ΠΌ Π·Π½Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡΠΎΠΆΠ΄Π°ΡΡΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Ρ ΠΎΡΠΎΡΠ΅ΠΉ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΡΠΌΠ΅Π»ΠΎΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ².
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΡΠ΅Π½Π°ΡΠΈΡ, Π³Π΄Π΅ Π²ΡΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΡ ΠΎΠ΄ΠΈΡ Π·Π° Π³ΡΠ°Π½ΠΈΡΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°. Π Java, Π΅ΡΠ»ΠΈ ΡΠ΅Π»ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΠΈΠ³Π°ΡΡ ΡΠ²ΠΎΠΈΡ ΠΏΡΠ΅Π΄Π΅Π»ΠΎΠ², ΡΠΎ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΠΏΡΠΈΡΡΠ½ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΡ ΠΊ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠΉ Π³ΡΠ°Π½ΠΈΡΠ΅. Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎ, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠΎΠ΄ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ°:
// OverflowEX.java
public class OverfTowEX {
publiΡ static void main(String args []) {
byte x = 0;
for (int i = 0; i < 130; i++) {
x++;
System.out.println(x);
}
}
}
ΠΠ°ΠΊ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, byte Π² Java ΡΠ²Π»ΡΠ΅ΡΡΡ 8-Π±ΠΈΡΠΎΠ²ΡΠΌ ΡΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½ΡΡ ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ byte Π»Π΅ΠΆΠΈΡ ΠΎΡ -128 Π΄ΠΎ 128. Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π΅Π΄ΠΈΠ½ΠΈΡΡ ΠΊ Π»ΡΠ±ΠΎΠΉ Π³ΡΠ°Π½ΠΈΡΠ΅ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π±ΡΠ΄Π΅Ρ Π΄ΡΡΠ³Π°Ρ Π³ΡΠ°Π½ΠΈΡΠ° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΠΎΡΡΠΎΠΌΡ Π² ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ 1 ΠΊ 127 ΡΠΎΠ·Π΄Π°ΡΡ -128. Π Π΅ΡΠ»ΠΈ ΠΎΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΠΏΡΡΡ ΡΠΈΡΠ΅Π» Π²ΡΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ Π±ΡΠ΄ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ:
126
127
-128
-127
-126
ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π²Π΅ΡΡΠΌΠ° ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π² ΡΠ²ΡΠ·ΠΈ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Π½ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½ΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΏΠΎΡΠΎΠΆΠ΄Π°ΡΡΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ°ΠΊΠΎΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠΎΡ ΡΠ°Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠΈΠΏΠ΅ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ). ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ C# ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, Π½ΠΎ ΡΠ·ΡΠΊ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΡΠ²Π½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
β‘ ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄. Π§ΡΠΎΠ±Ρ Π±ΠΎΡΠΎΡΡΡΡ Ρ ΡΡΠΈΠΌ ΡΠΈΠΏΠΎΠΌ ΠΌΠΎΠ»ΡΠ°Π»ΠΈΠ²ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ, C# Π²Π²ΠΎΠ΄ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌΡΡ ΠΈ Π½Π΅ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ. ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ checked ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² ΡΠ»ΡΡΠ°Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠΈ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΡΠ°ΠΊΠΈΡ , ΠΊΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ Π²ΡΡΠ΅. ΠΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ. ΠΠ½ΡΡΡΡΠΊΡΠΈΠΈ checked/unchecked ΡΠ»Π΅Π΄ΡΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌΡ Π½ΠΈΠΆΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡ (i). ΠΠ½ΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π»Ρ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π² ΡΠΊΠΎΠ±ΠΊΠΈ ΡΡΠ΄Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ checked/unchecked ΠΏΠΎΠΊΠ°Π·Π°Π½ Π² ΠΏΡΠ½ΠΊΡΠ΅ (ii). ΠΠΏΠ΅ΡΠ°ΡΠΈΡ checked ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ: