string Ρ = "a string";
object Ρ = Ρ;
if (Ρ is System.String) {
System.Console.WriteLine("x is a string");
}
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΡΠ°Π²Π΅Π½ΡΡΠ²Π° aΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅, ΡΡΠ»ΠΎΠ²Π½ΡΠ΅, ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠ΅, Π±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈ ΡΠ΄Π²ΠΈΠ³Π°
Π ΠΎΠ±ΠΎΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΡΠ°Π²Π΅Π½ΡΡΠ²Π° ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΡΠ΅Π», ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π±ΡΠ»Π΅Π²ΡΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ², ΡΡΡΠ»ΠΎΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ . ΠΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ, ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠ΅ Π²ΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ²
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Java ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π½Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΡΠ²Π½ΠΎΠ³ΠΎ ΡΡΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΏΠ° ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° (). ΠΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠ° Π² C#. C# ΡΠ°ΠΊΠΆΠ΅ Π²Π²ΠΎΠ΄ΠΈΡ ΡΡΠ΄ Π΄Π΅ΠΉΡΡΠ²Π΅Π½Π½ΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ², Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ Π² ΡΠ·ΡΠΊ, ΡΡΠ΅Π΄ΠΈ Π½ΠΈΡ ΠΌΡ Π²ΡΠ΄Π΅Π»ΠΈΠΌ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΡ ΠΈ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΡ.
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΠΈΠΏΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ²Π»ΡΡΡΡΡ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ ΠΏΠ°ΠΌΡΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°, ΠΎΠ½ΠΈ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π΄Π»Ρ ΡΠ΅Π»Π΅ΠΉ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ. ΠΠ½ΠΎΠ³Π΄Π°, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ Π΄Π»Ρ ΡΠΈΠΏΠΎΠ² Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. Π£ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΈ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΡΠΌΠΈΡΡΠ΅Ρ Π»ΠΈΠ½ΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈΠΏΠ°ΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈ ΡΡΡΠ»ΠΎΡΠ½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΠΈΡ Π² ΠΈ ΠΈΠ· ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°.
Π£ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π½Π΅ΡΠ²Π½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠΉ ΡΠΈΠΏ. ΠΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΈ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ, Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΡΠΈΠΏΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΏΠΈΡΡΠ΅ΡΡΡ Π² Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΠ΄Π΅ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ, ΠΊΠ°ΠΊ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² C#:
// BoxEx.cs
public class OverflowEX {
public static void Main(String[] args) {
int x = 10;
Object obj = (Object)x;
Console.WriteLine(obj);
}
}
Π’Π°ΠΊΠΎΠΉ ΡΠΈΠΏ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² Java. ΠΠΎΠ΄, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ Π½ΠΈΠΆΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Ρ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡΡΡ Π² ΡΡΡΠ»ΠΎΡΠ½ΡΠ΅ ΡΠΈΠΏΡ:
// BoxEx.java
public class BoxEX {
public static void main(String args[]) {
int x = 10;
object obj = (object)x;
System.out.println(obj);
}
}
Π Π°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ½ΠΎΠ²Π° ΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌΡ ΡΠΈΠΏΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΎΠΏΡΡΡ ΠΆΠ΅ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Π° Π² Java. ΠΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΠΈ ΡΡΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ. Π‘ΡΠ°Π·Ρ Π·Π°ΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΡΠ²Π½ΡΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΈΠΏΠ°, ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΏΠ°. ΠΠΎΡ Π½ΠΎΠ²Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ BoxEx.cs:
// BoxEX.cs
public class OverflowEX {
public static void Main(String[] args) {
int x = 10;
Object, obj = (Object)x;
Console.WriteLine(obj);
int Ρ = (int)obj;
Console.WriteLine(y);
}
}
ΠΡΡΠ³ΠΈΠΌ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ C#, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΌ Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ², ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΈΠ· ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ Π² ΡΠΈΠΏ, Π° Π½Π΅ ΠΈΠ· ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° Π² ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ. ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ implicite Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π² Π΄ΡΡΠ³ΠΎΠΉ. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΠΈΠΌΠ΅ΡΡΡΡ Π΄Π²Π° ΠΊΠ»Π°ΡΡΠ° Man ΠΈ Car, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π½Π΅ ΡΠ²ΡΠ·Π°Π½Ρ. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ ΠΎΠ΄ΠΈΠ½ ΠΊΠ»Π°ΡΡ Π² Π΄ΡΡΠ³ΠΎΠΉ. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π»ΠΈΡΡΠΈΠ½Π³ Man.cs:
public class Man {
int arms, legs;
string name;
public Man(){}
public int Arms {
set {
arms = value;
}
get {
return arms;
}
}
public string Name {
set {
name = value;
}
get {
return name;
}
}
public int Legs {
set {
legs = value;
}
get {
return legs;
}
}
}
ΠΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅ΡΡ ΠΈΠ· ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°, ΠΊΠ»Π°ΡΡ Man ΠΈΠΌΠ΅Π΅Ρ ΡΡΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°: ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ ΠΈΠ»ΠΈ ΠΈΠ·Π²Π»Π΅ΡΡ Legs, Arms, Name. ΠΠΈΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π»ΠΈΡΡΠΈΠ½Π³ ΠΊΠ»Π°ΡΡΠ° Car:
public class Car {
int wheels, doors, headlights;
public Car(int wheels, int doors, int headlights) {
this.wheels = wheels;
this.doors = doors;
this.headlights = headlights;
}
}
He ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΡΠ°Π²ΠΈΠ» ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΡΠΎΠΏΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠ°Ρ ΠΏΠΎΠ»Π΅ΠΉ Π΄Π°Π½Π½ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π°ΠΌΠΈ. Π ΡΠ»ΡΡΠ°Π΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΠΎΠ»Π΅ Car.wheel Π±ΡΠ΄Π΅Ρ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΎ Ρ Man.legs, Π° ΠΏΠΎΠ»Π΅ Car.doors Ρ Man.arms. ΠΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΏΠΎΠ»Ρ Π² Car, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΠΎΡ ΠΎΠΆΠ΅Π΅ Π½Π° Man.Name, Π½ΠΎ ΡΡΠΎ Π½Π΅ ΠΌΠ΅ΡΠ°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ. ΠΠΎΠΆΠ½ΠΎ, ΡΠΊΠ°ΠΆΠ΅ΠΌ, ΡΠΎΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Car.headlights Ρ Π΄Π»ΠΈΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² Man.name. ΠΡΠ±Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°, Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΠ°. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Man.name Π½Π΅ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ Car.headlights, Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π΄Π»Ρ headlights ΠΆΠ΅ΡΡΠΊΠΎ ΠΊΠΎΠ΄ΠΈΡΡΠ΅ΡΡΡ 2, ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»Π°Π΅ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΡΡΡ Man.name. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΊΠ»Π°ΡΡΠ° Car:
public class Car {
int wheels, doors, headlights;
public Car(int wheels, int doors, int headlights) {
this.wheels = wheels;
this.doors = doors;
this.headlight = headlights;
}
public static implicit operator Car(Man man) {
return new Car(man.Legs, man.Arms, 2);
}
public static explicit operator(Car car) {
Man man = new Man();
man.Arms = car.doors;
man.Legs = car.wheels;
man.Name = "john";
return man;
}
}
ΠΡ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π΄Π»Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ToString() ΠΎΠ±ΠΎΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΡΠΎΠ±Ρ Π²ΡΠ²Π΅ΡΡΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Car. ΠΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ ΡΠ°ΠΊ:
// Π΄Π»Ρ Man.cs
public override string ToString() {
return "[arms:" + arms + "|legs:" + legs + "|name:" + name + "]";
}
// Π΄Π»Ρ Car.cs
public override string ToString() {
return "[wheels:" + wheels + "|doors:" + doors + "|headlights:" + headlights + "]";
}
ΠΠΈΡΡΠΈΠ½Π³ ΠΊΠΎΠ΄Π° Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ:
// BoxEx.cs
public class OverflowEX {
public static void Main(String[] args) {
Car car = new Car (4, 5, 2);
Man man = (Man) car; // ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ²Π½ΠΎΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅
Console.WriteLine("Man - ");
Console.WriteLine(man);
Console.WriteLine();
Car car2 = man; // ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π½Π΅ΡΠ²Π½ΠΎΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅
Console.WriteLine("Car - ");
Console.WriteLine(car2);
}
}
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π½ΠΈΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ:
Man -
[arms:5|legs:4|name:john]
Car -
[wheels:4|doors:5|headlights:2]
ΠΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ°
Π Π½Π°ΡΠ°Π»Π΅ Π²Π°ΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Π² CLS. ΠΠ΄Π½Π°ΠΊΠΎ CLS ΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΊ Π½Π΅ΠΉ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ·ΡΠΊΠΈ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠ΅ Π΅Π΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ, Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ½ΡΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ·ΡΠΊΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠ·ΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ², Π²ΡΠ΅-ΡΠ°ΠΊΠΈ ΠΈΠΌΠ΅ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ. Java ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΠ·ΡΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ², β Π½ΠΈ ΠΎΠ΄Π½Π° ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΉ, ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΡ Π² ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΡΠ΅Π΄Ρ .NET Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΡΠ΄ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΉ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ².
β‘ ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π½Π° ΡΠΈΠΏΠ°Ρ Π΄Π°Π½Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ ΡΠ²Π»ΡΡΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌ ΡΠΈΠΏΠΎΠΌ ΡΠ·ΡΠΊΠ° (ΡΠ°ΠΊΠΈΠΌ, ΠΊΠ°ΠΊ System.Decimal).
β‘ ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ², Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΡ ΠΊΠ»Π°ΡΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ.
β‘ ΠΡΠΈΠΌΠ΅Π½ΡΠΉΡΠ΅ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΈΠΌΠ΅Π½Π°Ρ ΠΈ ΡΠΈΠ³Π½Π°ΡΡΡΠ°Ρ , ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π² CLS.
β‘ ΠΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΏΠΎΠ»Π΅Π·Π½Π° Π² ΡΠ»ΡΡΠ°ΡΡ , Π³Π΄Π΅ ΡΠΎΡΠ½ΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, ΠΊΠ°ΠΊΠΈΠΌ Π±ΡΠ΄Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
β‘ ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡΠ΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠ΅ ΡΠΈΠ³Π½Π°ΡΡΡΡ. ΠΠ΅ Π²ΡΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π²ΡΠ·ΠΎΠ² ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ². ΠΠΎΡΡΠΎΠΌΡ ΠΏΠΎΡΡΠ°ΡΠ°ΠΉΡΠ΅ΡΡ Π²ΡΠ΅Π³Π΄Π° Π²ΠΊΠ»ΡΡΠ°ΡΡ Π²ΡΠΎΡΠΈΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΌ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΌ Π΄Π»Ρ Π΄ΠΎΠΌΠ΅Π½Π° ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠ΅Π΅Ρ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ.
ΠΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΡΠ²ΡΠ·Π°Π½Π° ΠΊΠ°ΠΊ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡΠΌΠΈ, ΡΠ°ΠΊ ΠΈ Ρ ΡΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½ΡΡ , Π° Π½Π΅ Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΎΠ½Π° ΡΠ²ΡΠ·Π°Π½Π° ΡΠΎ Π²ΡΠ΅ΠΌ ΡΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½ΡΡ , Π° Π½Π΅ Ρ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΠΎΠ΄Π½ΠΈΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΠΎ Π΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ static ΠΈ public.
Π Π½ΠΈΠΆΠ΅ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Wheels, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠ΅ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΡΠ°ΠΌΠΈΠΌ ΡΠΎΠ±ΠΎΠΉ. ΠΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΡΠ°ΡΡΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² ΠΈ ΡΠ΅Π³ΠΎΠ² ΡΠΈΠΏΠ° XML Π²Π½ΡΡΡΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π², ΠΎΠ½ΠΈ Π½ΡΠΆΠ½Ρ Π΄Π»Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ C# Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΡΠΆΠ΄Π°ΡΡΡΡ Π½ΠΈΠΆΠ΅ Π² ΡΡΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ: