Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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#