> 文档中心 > Essential C# 6.0 C#学习笔记 第三章 操作符和控制流

Essential C# 6.0 C#学习笔记 第三章 操作符和控制流


Essential C# 6.0 学习笔记

由于博主对C#的使用比较多,但是对C#的理解还是停留在表面,所以开创此系列篇章,详细记录在学习Essential C# 6.0 这本书时候遇到的问题,以及优秀的知识点的记录,还有自己对一些知识点的理解以及拓展。

该系列文章绝不是简单的阐述概念,而是将知识点互相串通,融入使用。欢迎大家关注,文章会持续更新!!!


第三章 操作符和控制流

Essential C# 6.0 C#学习笔记 第三章 操作符和控制流

文章目录

  • Essential C# 6.0 学习笔记
  • 第三章 操作符和控制流
    • 1.C++与C#求值顺序
    • 2.空接合操作符
    • 3.null条件操作符
    • 4.计算字节的值
  • 总结

1.C++与C#求值顺序

C++求值顺序
在C++中,x=1
对于M(x++,x++)这样的调用,可能是出现M(1,2)也可能是M(2,1),具体右编辑器决定
但是C#,只会调用M(1,2),因为C#做出了两点保证
第一:传给调用的实参总是从左向右计算
第二:总是先将被递增的值赋给变量,再使用表达式的值
这两点在C++中都不能得到保证

注意:
在C\C++和C#之间移植使用递增和递减操作符的代码时候要小心;
他们遵循不同的规则

另外注意,Switch语句,C++会自动“贯穿”至下一个switch小节,但是C#中不会

2.空接合操作符

空接合操作符(null coalescing operator) ?? 能简单地表示“如果这个值为空,就使用另一个值”。

其形式如下:expression1 ?? expression2

??操作符支持短路求值。如果expression1不为null, 就返回expression1的值, 不对另一个表达式求值。如果expression1求值null,就返回expression2的值。 和条件操作符不同,空接合操作符是二元操作符。

如果firstName为null,就用空接合操作符将fullName设为"Jack",如果firstName不为null,fullName将获得firstName的值。

空结合操作符能完美地“链接”。例如,对于表达式x ?? y ?? z,如果x不为null将返回x;否则,如果y不为null将返回y;否则返回z。也就是说,从左向右选出第一个非空表达式。如果之前所有表达式都为空,就选择最后一个表达式。

空结合操作符是C#2.0和可空值类型一起引入的,它的操作数既可以是可空值类型,也可以是引用类型。

    static void Main(string[] args)    { string firstName = null; string fullName = firstName ?? "Jack"; Console.WriteLine(fullName);    }

Essential C# 6.0 C#学习笔记 第三章 操作符和控制流

3.null条件操作符

在调用值为null的方法时,运行时都会抛出一个System.NullReferenceException的异常,通常以此表明程序逻辑上存在错误。考虑到在调用成员之要前进行null值检查这一模式的频率很高,C# 6.0引入了一种更为简化的null条件操作符( null-conditionoperator) ?. 。

比如说,下面两句代码结果一模一样
Essential C# 6.0 C#学习笔记 第三章 操作符和控制流

    private delegate void delegate_Func (int x,int y);  //定义了一个委托类型,这个委托类型的名字叫做Func    static void Main(string[] args)    { delegate_Func delegate_Func=null; if (delegate_Func != null) {     delegate_Func.Invoke(1, 2); } delegate_Func?.Invoke(1, 2);    }    static void GetMax(int x,int y)    { Console.WriteLine( Math.Max(x, y));    }

4.计算字节的值

Essential C# 6.0 C#学习笔记 第三章 操作符和控制流

Essential C# 6.0 C#学习笔记 第三章 操作符和控制流

总结

本章提到了介绍了C#赋值和算数操作符,以及const关键字声明常量表达式

Essential C# 6.0 C#学习笔记 第三章 操作符和控制流 创作打卡挑战赛 Essential C# 6.0 C#学习笔记 第三章 操作符和控制流 赢取流量/现金/CSDN周边激励大奖海量搞笑GIF动态图片