美文网首页
C# 类型转换方式

C# 类型转换方式

作者: 凌枫望星月 | 来源:发表于2020-04-01 20:30 被阅读0次
    • 关于as
      利用as操作符进行类型转换,首先判断当前对象的类型,当对象的类型能够满足要求后,才进行转换,否则会报错。
      而要求就是:需要转化的对象的类型属于转换目标类型,或者目标类型的派生类型。
      所以as具有一定的安全性。
    using System;
    namespace TypeTransform
    {
        class NewType
        {   
        }
        class SonType:NewType
        {   
        }
        class HelloWorld
        {
            static void Main(string[] args)
            {
                NewType obj1 = new SonType();
                SonType obj2 = obj1 as SonType;
                Console.WriteLine(obj2.GetType());
                Console.ReadKey();
            }
        }
    }
    

    需要注意的是,as不能用于不同类型之间转换。
    也不能用于值类型数据。

    • 如果想要值类型数据,可以在C#中使用is操作符判断,再显式转换。
            static void Main(string[] args)
            {
                int value1 = default(int);
                object obj3 = 11;
                if(obj3 is int) 
                {
                    value1 = (int) obj3;
                }
                Console.WriteLine(value1);
                Console.ReadKey();
            }
    
    • 如果想在不同类型之间转换
      可使用implicit(隐式)和explicit(显示)定义的类型转换运算符。
      注意,因为隐式转换不需要程序员强制转换,必须小心不能丢失信息。
    using System;
    namespace TypeTransform
    {
        class NewType
        {   
            public NewType(SonType f){p = f;}
            public SonType p{get;}
            public static implicit operator NewType(SonType f)
            {
                Console.WriteLine("SonType转换为NewType");
                return new NewType(f);
            }
            public static explicit operator SonType(NewType f)
            {
                Console.WriteLine("NewType转换为SonType");
                return new SonType();
            }
        }
        class SonType
        {   
            
        }
        class HelloWorld
        {
            static void Main(string[] args)
            {
                SonType a = new SonType();
                NewType b = new NewType(a);
                NewType c = a;
                SonType d = (SonType)b;
                
                Console.WriteLine(c.GetType()+ " "+ d.GetType());
                Console.ReadKey();
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:C# 类型转换方式

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