zoukankan      html  css  js  c++  java
  • C# 基础系列运算符和类型转换

      条件运算符 ?:  条件? 真的值: 假的值

      C# 提供checked 和ucchecked运算符 。如果把一个代码块标记为checked,CLR就会执行溢出检查,如果发生溢出,就抛出OverflowException异常。

    byte b = 255;
                checked
                {
                    b++;
                }
                Console.WriteLine(b.ToString());
    

      执行代码就会抛出OverflowException异常

     byte b = 255;
                unchecked
                {
                    b++;
                }
                Console.WriteLine(b.ToString());
    

      执行将打印 0。

         IS运算符,检查类型是否为指定类型。这个运算符非常实用,在很多时候我们要用object进行传值和泛型处理,这时候这个特别是实用。我们可以先对object进行判断是不是我们要的类型,如果是进行相应的处理,也可以当我们的操作进行手动抛出异常。这个对开发或者数据安全性处理很有效。我记得我之前面试的时候,就被问到一个问题:怎么测试一个对象的值是不是你要的值?我想你应该也想到比较对象的值。这个没有错,但是还是不够好,我们应该先判断是不是我们要的类型,如果不是直接 return FALSE 。是在比较值,这样不会保证不会出现运行时错误,也提高了性能。

      object o = "111";
                Console.WriteLine(o is string); //true
                object o2 = 111;
                Console.WriteLine(o2 is string); //false
    

      

         AS 运算符,执行引用类型的显形转换,如果不是指定类型,返回null。

       object o = "111";
                string s = o as string; //1111
                object o2 = 111;
                string s2 = o2 as string; //null
    

      

      空合并运算符(??)

      

    int? a = null;
                int b;
                b = a ?? 10; //  b值为 10
                a = 3;
                b = a ?? 10; // b 值为 2
    

      


    比较

      很多都知道Equals和 ==,不过对象比较还有一个静态比较类 System.Object.ReferenceEquals。

    1。System.Object.ReferenceEquals MSDN中的参考 确定指定的 object实例是否是相同的实例。

    2。Equals()方法在MSDN中的参考:

    Equals 的默认实现仅支持引用相等,但派生类可重写此方法以支持值相等。

    对于引用类型,相等定义为对象相等,即这些引用是否引用同一对象。对于值类型,相等定义为按位相等

    3。

    ==运算符在MSDN中的解释:

    对于预定义的值类型,如果操作数的值相等,则相等运算符 (==) 返回 true,否则返回 false。对于 string 以外的引用类型,如果两个操作数引用同一个对象,则 == 返回 true。对于 string 类型,== 比较字符串的值。

     int inF = 1;
                bool a = System.Object.ReferenceEquals(inF, 1); 
                Console.WriteLine(a); // false
                Console.WriteLine(inF.Equals(1));//true
                Console.WriteLine(inF == 1);//true
    

      

  • 相关阅读:
    ngx-bootstrap使用04 carousel组件
    ngx-bootstrap使用03 Alerts组件、利用Object.assign复制对象
    ngx-bootstrap使用02 Accordion组件的使用
    ngx-bootstrap使用01 安装ngx-bootstrap和bootstrap及其使用、外部样式引入
    SpringBoot11 读取properties文件、发送邮件
    SpringBoot10 整合JSP
    SpringBoot09 自定义servlet、注册自定义的servlet、过滤器、监听器、拦截器、切面、webmvcconfigureradapter过时问题
    红帽系统制作yum本地源
    利用python数据分析panda学习笔记之基本功能
    利用python数据分析panda学习笔记之DataFrame
  • 原文地址:https://www.cnblogs.com/qionghua/p/2639778.html
Copyright © 2011-2022 走看看