zoukankan      html  css  js  c++  java
  • (5)C#运算符

    一、运算符

    参照javase     (7)java基础知识-原码、反码、补码、运算符

    二、运算符2

    1. checked unchecked 运算符

       1.1checked 当变量溢出时不再默默溢出,而是抛出异常

                int a = 1000000;
                int b = 1000000;
                int c = a * b;//-727379968
                int d = checked(a * b);// 抛异常 System.OverflowException:“Arithmetic operation resulted in an overflow.”
                Console.WriteLine(c);

    checked  1.对double和float没作用,他们溢出为特殊无限值。2.对decimal类型也没作用这种类型总是进行溢出检查

      1.2 unchecked 

    不进行溢出检查

     

    2.is运算符

     检查is左边对象是否可转换的为is右边的类型。可以则返回true

    该运算符常在向下类型转换前使用,不能用于自定义类型和数值转换

        class Program
        {
            static void Main(string[] args)
            {
                Program p = new Program();
                if ( p is object) Console.WriteLine("True"); 
            }
        }

    C#7新增功能 

    右边类型可以定义一个变量,该变量是左边变量转换为右边以后的类型实例

        class Program
        {
            static void Main(string[] args)
            {
                Dog dog = new Dog();
                if (dog is Animal animal) animal.add(); //等价于 ((Animal)dog).add()//打印Dog
            }
        }
    
      public  class Animal {virtual public void add() { Console.WriteLine("Animal"); } }
      public class Dog:Animal { override public void add() { Console.WriteLine("Dog"); } }

    3.as运算符  -C#6新增

     as运算符在向下类型转换出错时会返回null

            static void Main(string[] args)
            {
                object o1 = "abc";
                object o2 = 3;
                string str1 = o1 as string;
                Console.WriteLine("str1: "+str1);
                string str2 = o2 as string;
                if (str2 == null) { Console.WriteLine("str2: " + "null"); }
    
                //string str3 = (string)o2;//抛异常  System.InvalidCastException:“Unable to cast object of type 'System.Int32' to type 'System.String'.”
            }

    4.sizeof运算符

    5.type运算符

    6.nameof运算符

        class Program
        {
            static void Main(string[] args)
            {
               string str= nameof(Program.ToString);
               Console.WriteLine(str);//ToString
            }
        }

    7.index运算符

    8.可空类型运算符

     给不能为空的类型赋值为空

    int? a = null;//

    9.空合并运算符

      如果??左边为空,则执行右边

        class Program
        {
            static void Main(string[] args)
            {
                int? a = null;//
                Console.WriteLine(a);
                int? b = a ?? 10;
                Console.WriteLine(b);
                Console.ReadLine();
            }
        }

    10.空条件运算符

     如果变量为空时表达式不会抛出空异常,而是赋值给变量为null

                string s = null;
                //string str = s.ToString(); //报空异常 System.NullReferenceException:“Object reference not set to an instance of an object.”
                string str2 = s?.ToString();
                if(str2==null) Console.WriteLine("null");
                Console.ReadLine();

    三、运算符重载

    四、自定义索引运算符

  • 相关阅读:
    系统可靠性计算
    jira与readmine区别
    linux下批量替换文件内容
    JMeter学习(十九)JMeter测试MongoDB
    mongoVUE1.5.3 破解方法
    Junit使用GroboUtils进行多线程测试
    JMeter学习(十八)JMeter测试Java(二)
    JMeter学习(十七)JMeter测试Java
    Tomcat 和 Resin 比较,哪个更适合你?
    JMeter学习(十四)JMeter监控Tomcat性能
  • 原文地址:https://www.cnblogs.com/buchizaodian/p/5600311.html
Copyright © 2011-2022 走看看