• C#类型转换运算符之 explicit implicit


    类型转换运算符

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

    explicit

    明确的、明显的 称为:显式

    implicit

    含蓄的、暗含的 称为:隐式

    它们解决什么问题?

    考虑下面的需求,Person类有个字段age。我想使用 Person p = (Person) 18 来创建一个age为18的Person对象,怎么办?

    更进一步,我想使用Person p = 18 来创建一个age为18的Person对象,怎么办?

    实际应用

    使用explicit(显式)和implicit(隐式)

    class Person
    {
        private int age;
        public int Age
        {
            get { return age; }
            set { age = value; }
        }
    
        public static explicit operator Person(int age)
        {
            return new Person() { age = age, };
        }
    
        //public static implicit operator Person(int age)
        //{
        //    return new Person() { age = age, };
        //}
    }
    
    class Program
    {
        static void Main(string[] args)
        {
            Person p = (Person)18; // 调用explicit
            //Person p = 18; // 调用implicit
        }
    }

    注意

    二者不可同时提供,否则编译错误。这种语法其实是借鉴了C++的方式,并进行了扩展。一般情况下,请不要使用这种类型转换,因为不直观。

    参考资料

    implicit(C# 参考)

    http://www.cnblogs.com/nzbbody/p/3519688.html

  • 相关阅读:
    openssl rsautl和openssl pkeyutl(文件的非对称加密)
    Card Stacking 队列模拟
    poj 2456 Aggressive cows 贪心+二分
    E. MaratonIME does (not do) PAs
    B. Yet Another Crosses Problem
    hdu 2578 Dating with girls(1) 满足条件x+y=k的x,y有几组
    poj 3262 Protecting the Flowers 贪心 牛吃花
    hdu 1789 Doing Homework again 贪心
    贪心总结
    E. Third-Party Software
  • 原文地址:https://www.cnblogs.com/zhaoqingqing/p/4825794.html
Copyright © 2020-2023  润新知