logo
CSharp_Prog_Guide

Пример 2 Описание

В этом примере демонстрируется неявное преобразование, в котором определяется оператор преобразования, выполняющий операцию, обратную описанной в предыдущем примере: преобразование значения типа Digit к целочисленному типу Byte. Поскольку к типу Byte можно преобразовать любое значение типа Digit, нет нужды делать преобразование явным для пользователя.

Код

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

}

}