美文网首页
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#魔灵-lesson_04-数据转换

    类型转换分以下两种 隐式类型转换 - 这些转换是 C# 默认的以安全方式进行的转换, 不会导致数据丢失。 显式类型...

  • C# 类型转换

    隐式类型转换 - 这些转换是 C# 默认的以安全方式进行的转换, 不会导致数据丢失。例如,从小的整数类型转换为大的...

  • C# 类型转换方式

    关于as利用as操作符进行类型转换,首先判断当前对象的类型,当对象的类型能够满足要求后,才进行转换,否则会报错。而...

  • c# 学习笔记2

    C# 类型转换类型转换从根本上说是类型铸造,或者说是把数据从一种类型转换为另一种类型。在 C# 中,类型铸造有两种...

  • C# Byte[]使用总结

    C# Byte[] string转换 01,C# string类型转成byte[]: Byte[] byteArr...

  • C#与c++对应的类型

    //C#调用C++的DLL搜集整理的所有数据类型转换方式-转载//c++:HANDLE(void *) ---- ...

  • unity C# 自定义隐式转换

    在C#中类型转换类型:隐式转换(implicit conversions)隐式转换就是系统默认的、不需要加以声明就...

  • c# is & as

    做为C#里的类型转换操作符,is和as都是强制类型转换。 Difference is 类型检查,检查一个对象是否兼...

  • Python、JS、TS、C# 对比

    手头暂时没有C# 环境,以后会补全 内容\语言PythonJSTSC#强/弱类型强类型不可动态转换弱类型可动态转换...

  • 07.【转】C#中的as用法 &【原创】Revit中的转

    【转载内容】在程序中,进行类型转换是常见的事,C#支持基本的强制类型转换方法,例如: 这样强制转换的时候,这个过程...

网友评论

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

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