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作声明,则需要加括号强制转换。如果没有这样的声明,则会报转换异常。





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