C#轉換運算符

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作聲明,則需要加括號強制轉換。如果沒有這樣的聲明,則會報轉換異常。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章