Używanie operatorów konwersji (Przewodnik programowania w języku C#)
Można użyć operatorów konwersji implicit, które są łatwiejsze w użyciu, lub operatorów konwersji explicit, które jasno wskazują konwersję typu każdej osobie czytającej kod.W tym temacie przedstawiono oba rodzaje operatorów konwersji.
[!UWAGA]
Aby uzyskać informacji dotyczące konwersji typu prostego, zobacz Porady: konwertowanie ciągu na liczbę (Przewodnik programowania w języku C#), Porady: konwertowanie tablicy typu Byte na liczbę całkowitą (Przewodnik programowania w języku C#), Porady: konwertowanie ciągów szestnastkowych na typy liczbowe (Przewodnik programowania w języku C#) lub Convert.
Przykład
To jest przykład operatora konwersji jawnej.Ten operator konwertuje z typu Byte do typu wartości o nazwie Digit.Ponieważ nie wszystkie bajty mogą być konwertowane na cyfry, konwersja jest jawna; oznacza to że musi być stosowane rzutowanie, jak pokazano w metodzie Main.
struct Digit
{
byte value;
public Digit(byte value) //constructor
{
if (value > 9)
{
throw new System.ArgumentException();
}
this.value = value;
}
public static explicit operator Digit(byte b) // explicit byte to digit conversion operator
{
Digit d = new Digit(b); // explicit conversion
System.Console.WriteLine("Conversion occurred.");
return d;
}
}
class TestExplicitConversion
{
static void Main()
{
try
{
byte b = 3;
Digit d = (Digit)b; // explicit conversion
}
catch (System.Exception e)
{
System.Console.WriteLine("{0} Exception caught.", e);
}
}
}
// Output: Conversion occurred.
W tym przykładzie pokazano operator niejawnej konwersji, definiując operator konwersji, który cofa czynność z poprzedniego przykładu: konwertuje wartość klasy o nazwie Digit do zintegrowanego typu Byte.Ponieważ dowolna cyfra może być konwertowana na Byte, nie trzeba zmuszać użytkowników do jawnej konwersji.
struct Digit
{
byte value;
public Digit(byte value) //constructor
{
if (value > 9)
{
throw new System.ArgumentException();
}
this.value = value;
}
public static implicit operator byte(Digit d) // implicit digit to byte conversion operator
{
System.Console.WriteLine("conversion occurred");
return d.value; // implicit conversion
}
}
class TestImplicitConversion
{
static void Main()
{
Digit d = new Digit(3);
byte b = d; // implicit conversion -- no cast needed
}
}
// Output: Conversion occurred.
Zobacz też
Informacje
Operatory konwersji (Przewodnik programowania w języku C#)
Koncepcje
Przewodnik programowania w języku C#