C#类型转换

类型的转换
C#中类型转换(显隐)的机制分为两种:
一、隐式转换(implicit conversions)
二、显式转换(explict conversions)
隐式转换不需要指明欲转变的类型;

显式转换明确地使用转换运算符(cast)指定要转换成哪一种类型。
C#允许程序员如果对于溢出进行处理
  checked:检查是否出现溢出
  unchecked:不检查是否出现溢出
  例如:

int a;

  long b=200000000000;

  try

  {

     a=checked((int)b);

     //也可使用checked语句,而非checked操作符

     //checked

     //{

       // (int)b;

       //这里可以对多个语句进行检查是否溢出

     //}

  }

  catch(System.OverflowException)

  {

     MseeageBox.Show("发生了溢出!");

  }

checked和unchecked的使用准则
  一、写代码时,将可能发生非预期溢出的代码放到一个checked块中
  二,写代码时,将允许发生溢出的代码显式地放到一个unchecked块中。

C#中类型转换(值类型与引用类型)
  一、值类型的转换
  二、引用类型的转换
  开发人员经常需要将一个对象从一种类型转换成他的类型。CLR允许将一个对象强制转换成它的类型或者它的任何基类型。

  引用类型转换例子(包含is和as操作符的使用):

class Fruit

  {

  }

  class Apple:Fruit

  {

   protect int i=1;

  }

  class Conversions

  {

     static void Main()

     {

        Fruit f=new Apple();

        Apple a;

        //强制转换

        ①a=(Apple)f;

        //在c#语言中进行强制类型转换的另一种方式是使用is操作符,

        //is操作符检查一个对象是否兼容于指定的类型,并返回一个boolean值。

        //is操作符永远不会抛出异常。

        ②if(f is Apple)

        {

           Apple a=(Apple)f;

           Console.Write(a.i);

        }

        //也可以用as实现

        ③a=f as apple

        if(a!=null)

        {

           Console.Write(a.i);

        }

        //判断f是否兼容apple,若f兼容而将其类型转换为apple并赋值给a,否则将返回null

       }

    }


  C#类型转换

图片来源:陈广C#视频

你可能感兴趣的:(类型转换)