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#视频

原文地址:https://www.cnblogs.com/lhard/p/2133542.html