zoukankan      html  css  js  c++  java
  • 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#视频

  • 相关阅读:
    信息爆炸时代,对待信息的三种方式
    Spring事务管理
    归并排序和快速排序的衍生问题
    Linux之Shell命令
    程序员找工作的干货经验
    css3 Transition动画执行时有可能会出现闪烁的bug
    布尔值
    null, undefined理解
    js文字的无缝滚动(上下)
    vue实现文字上下滚动
  • 原文地址:https://www.cnblogs.com/lhard/p/2133542.html
Copyright © 2011-2022 走看看