C# 允許程序員在類或結構上聲明轉換,以便類或結構與其他類或結構或者基本類型進行相互轉換。
轉換的定義方法類似於運算符,並根據它們所轉換到的類型命名。
要轉換的參數類型或轉換結果的類型必須是(不能兩者同時都是)包含類型。
class SampleClass
{
public static explicit operator SampleClass(int i)
{
SampleClass temp = new SampleClass();
// code to convert from int to SampleClass...
return temp;
}
}
轉換運算符概述
轉換運算符具有以下特點:
聲明爲 implicit 的轉換在需要時自動進行。
聲明爲 explicit 的轉換需要調用強制轉換。
所有轉換都必須聲明爲 static。
示例:
public class A
{
public int MyProperty { get; set; }
}
public class B
{
public Int32 MyProperty { get; set; }
public static implicit operator B(A a)
{
B temp = new B();
temp.MyProperty=a.MyProperty;
return temp;
}
}
A和B兩個類默認並不能直接轉換。但是B類做implicit聲明後就可以直接隱式轉換了:
A a = new A();
B b = a;
如果是使用的explicit作聲明,則需要加括號強制轉換。如果沒有這樣的聲明,則會報轉換異常。