美文网首页csharp
C#-用户自定义的隐式转换符

C#-用户自定义的隐式转换符

作者: JervieQin | 来源:发表于2018-07-17 15:35 被阅读23次

implicit 关键字用于声明隐式的用户定义类型转换运算符。 如果可以确保转换过程不会造成数据丢失,则可使用该关键字在用户定义类型和其他类型之间进行隐式转换。

class Digit
{
    public Digit(double d) { val = d; }
    public double val;
    // ...other members

    // User-defined conversion from Digit to double
    public static implicit operator double(Digit d)
    {
        return d.val;
    }
    //  User-defined conversion from double to Digit
    public static implicit operator Digit(double d)
    {
        return new Digit(d);
    }
}

class Program
{
    static void Main(string[] args)
    {
        Digit dig = new Digit(7);
        //This call invokes the implicit "double" operator
        double num = dig;
        //This call invokes the implicit "Digit" operator
        Digit dig2 = 12;
        Console.WriteLine("num = {0} dig2 = {1}", num, dig2.val);
        Console.ReadLine();
    }
}

隐式转换可以通过消除不必要的强制转换来提高源代码的可读性。 但是,因为隐式转换不需要程序员将一种类型显式强制转换为另一种类型,所以使用隐式转换时必须格外小心,以免出现意外结果。 一般情况下,隐式转换运算符应当从不引发异常并且从不丢失信息,以便可以在程序员不知晓的情况下安全使用它们。 如果转换运算符不能满足那些条件,则应将其标记为 explicit。

参考:https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/implicit

相关文章

  • C#-用户自定义的隐式转换符

    implicit 关键字用于声明隐式的用户定义类型转换运算符。 如果可以确保转换过程不会造成数据丢失,则可使用该关...

  • js中的类型转换

    在js中数据转换分为3种:隐式类型转换,强制类型转换,函数转换 1.隐式类型转换 (1):运算符转换 js中的值在...

  • 没有学不会的C++:用户自定义的隐式类型转换

    C++ 中的类型转换包含内建类型的转换和用户自定义类型的转换,而这两者都又可分为隐式转换和显示转换,所以一共有如下...

  • C++类型转换

    C++的类型转换分为隐式转换和显式转换 隐式转换举例: int i=4; double d=i;//隐式转换 显式...

  • C++<第三十三篇>:四种类型转换

    在 C++ 中,不同数据类型之间可以相互转换。无需用户指明如何转换的称为自动类型转换(隐式类型转换),需要用户显式...

  • scala-隐式机制及Akka

    隐式机制及Akka 隐式转换 隐式转换和隐式参数时Scala中两个非常强大的功能,利用隐式转换和隐式参数,可以提供...

  • 深入理解JavaScript数据类型(隐式转换、包装对象、类型检

    一、隐式转换 (+ 和 -,== 和 ===) 1. + 和 - 2. 比较运算符 ==(等于),会自动转换数据类...

  • 数据类型的强制转换

    数据类型的强制转换 toNumber toBoolean 运算符正号 隐式类型转换(看不出是toString/to...

  • Scala基础——隐式转换

    隐式转换 Scala的隐式转换,其实最核心的就是定义隐式转换函数,即implicitconversion func...

  • 关于NaN

    有两种情况会出现NaN 1.隐式转换失败:在表达式中出现-、*、/等数学运算符时,JS引擎会在计算之前隐式转换运算...

网友评论

    本文标题:C#-用户自定义的隐式转换符

    本文链接:https://www.haomeiwen.com/subject/rgfgpftx.html