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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值