显示转换explicit和隐式转换implicit

用户自定义的显示转换和隐式转换

显式转换implicit关键字告诉编译器,在源代码中不必做显示的转型就可以产生调用转换操作符方法的代码.

隐式转换implicit关键字告诉编译器只有当源代码中指定了显示的转型时,才产生调用转换操作符方法的代码.

例如:

//implicit 关键字用于声明隐式的用户定义类型转换运算符。

public static implicit operator string(aaa table)

{

return table;

}  

// 像下面的代码就是正确的:

aaa var1;

string var2;  

var2=var1;//正确,可以隐式转换。

 

//explicit 关键字用于声明必须使用强制转换来调用的用户定义的类型转换运算符。

public static explicit operator aaa(string table)

{

return Convert(table);

}  

aaa var1;  

string var2;  

var1=var2; //错误,不可以隐式转换。

var1=(aaa)var2//正确,可以强制转换。

 

将一个类型的对象转换为另一个类型的对象。

隐式转换可能在各种情况下发生,包括功能成员调用,表达式执行和赋值。

显式转换可以在强制类型转换表达式中发生。  

用户定义的隐式转换应该被设计成不会抛出异常而且不会丢掉信息。

如果一个用户定义的转换将产生一个异常(例如因为源变量超出了范围)或丢掉信息(例如丢掉高位),那么这个转换应该被定义为一个显式转换。

 

 

 

转载于:https://www.cnblogs.com/hao-1234-1234/p/6041083.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值