C#运算符流程控制

Posted 富坚老贼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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();

 

 

三、运算符重载

 

四、自定义索引运算符

 

以上是关于C#运算符流程控制的主要内容,如果未能解决你的问题,请参考以下文章

JS学习笔记运算符和流程控制语句

C#中的分支结构与循环

Java开发技术栈:Java基础语法流程控制语句运算符

流程控制语句

C#基础之流程控制语句详解

python 流程控制