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

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

引用摘自:implicit(C#
参考)

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

仍以Student求和举例

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

    class Student
    {
        /// <summary>
        /// 语文成绩
        /// </summary>
        public double Chinese { get; set; }

        /// <summary>
        /// 数学成绩
        /// </summary>
        public double Math { get; set; }
    }

例如:

不使用implicit 求和

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

    class Program
    {
        static void Main(string[] args)
        {
            var a = new Student
            {
                Chinese = 90.5d,
                Math = 88.5d
            };

            //a的总成绩 语文和数据的总分数
            Console.WriteLine(a.Chinese + a.Math);          
        }
    }

public static implicit operator string(aaa table)

使用implicit

{

    class Student
    {
        /// <summary>
        /// 语文成绩
        /// </summary>
        public double Chinese { get; set; }

        /// <summary>
        /// 数学成绩
        /// </summary>
        public double Math { get; set; }

        /// <summary>
        /// 隐式求和
        /// </summary>
        /// <param name="a"></param>
        public static implicit operator double(Student a)
        {
            return a.Chinese + a.Math;
        }
    }

return table;

求和:

}  

    class Program
    {
        static void Main(string[] args)
        {
            var a = new Student
            {
                Chinese = 90.5d,
                Math = 88.5d
            };

            double total = a;

            //a的总成绩 语文和数据的总分数
            Console.WriteLine(total);
        }
    }

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

aaa var1;

string var2;  

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

 

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

public static explicit operator aaa(string table)

{

发表评论

电子邮件地址不会被公开。 必填项已用*标注