logo search
CSharp_Prog_Guide

Реализация определенных пользователем преобразований между структурами

В данном примере определяются две структуры RomanNumeral и BinaryNumeral и демонстрируется преобразование между ними.

Пример

---

struct BinaryNumeral

{

private int value;

public BinaryNumeral(int value) //constructor

{

this.value = value;

}

static public implicit operator BinaryNumeral(int value)

{

return new BinaryNumeral(value);

}

static public explicit operator int(BinaryNumeral binary)

{

return (binary.value);

}

static public implicit operator string(BinaryNumeral binary)

{

return ("Conversion not yet implemented");

}

}

class TestConversions

{

static void Main()

{

RomanNumeral roman;

BinaryNumeral binary;

roman = 10;

// Perform a conversion from a RomanNumeral to a BinaryNumeral:

binary = (BinaryNumeral)(int)roman;

// Perform a conversion from a BinaryNumeral to a RomanNumeral:

// No cast is required:

roman = binary;

System.Console.WriteLine((int)binary);

System.Console.WriteLine(binary);

}

}

10

Conversion not yet implemented

----

Robust Programming