隱式轉換和顯式轉換運算子
C#允許使用者定義的型別通過使用 explicit 和 implicit 關鍵字來控制賦值和轉換。該方法的簽名採用以下形式:
public static <implicit/explicit> operator <ResultingType>(<SourceType> myType)
該方法不能再使用任何引數,也不能是例項方法。但是,它可以訪問其中定義的任何型別的私有成員。
implicit 和 explicit 演員的一個例子:
public class BinaryImage 
{
    private bool[] _pixels;
    public static implicit operator ColorImage(BinaryImage im)
    {
        return new ColorImage(im);
    }
    public static explicit operator bool[](BinaryImage im)
    {
        return im._pixels;
    }
}
允許以下強制轉換語法:
var binaryImage = new BinaryImage();
ColorImage colorImage = binaryImage; // implicit cast, note the lack of type 
bool[] pixels = (bool[])binaryImage; // explicit cast, defining the type
轉換運算子可以是雙向的,打算從你的型別,並打算給你的型別:
public class BinaryImage
{
    public static explicit operator ColorImage(BinaryImage im)
    {
        return new ColorImage(im);
    }
    public static explicit operator BinaryImage(ColorImage cm)
    {
        return new BinaryImage(cm);
    }
}
最後,as 關鍵字,它可以參與式層次結構中轉換,是不是在這種情況下有效。即使在定義了 explicit 或 implicit 演員之後,你也做不到:
ColorImage cm = myBinaryImage as ColorImage;
它將生成編譯錯誤。