zoukankan      html  css  js  c++  java
  • 显示转换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//正确,可以强制转换。

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

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

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

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

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

  • 相关阅读:
    模拟ssh远程执行命令
    基于UDP协议的套接字编程
    TCP三次握手,四次挥手
    基于TCP协议的套接字编程
    osi七层协议
    Python之__class__.__module__,__class__.__name__
    异常处理
    单例模式
    类方法__setattr__,__delattr__,__getattr__
    反射(hasattr,getattr,delattr,setattr)
  • 原文地址:https://www.cnblogs.com/hao-1234-1234/p/6041083.html
Copyright © 2011-2022 走看看