C# 6.0本质论(操作符与控制流)

三、操作符与控制流

3.1 操作符

3.1.1 递增递减操作符

  • 简化了代码,但二者执行都不是原子级别的运算,可能出现线程不安全的问题

3.1.2 常量表达式和常量符号

  • 常量表达式
    • 在编译时能完成求值的表达式
    • 编译生成CIL时用计算结果替代
  • 常量符号
    • const
    • 修改常量的操作会导致编译错误

3.1.3 空接合操作符

  • a??b
    • 如果为空则返回另一个值,短路运算

3.1.4 null条件操作符

  • a?.method().get()
    • a为null则整个调用链不计算,返回null
    • 如果不为null,则返回对应的可空类型
    • 避免a?[3]一块使用

3.1.5 位操作符

  • >>右移补1;
  • 位运算符优先级低于算术运算符

3.2 控制流

  • goto
    • 只能在switch语句中使用

3.3 预处理指令

  • 预处理指令告诉编译器要编译哪些代码,并指出如何处理代码中的特定错误和警告,以及有关代码组织的信息

3.3.1 处理版本或平台差异

  • #if 符号 … #endif
    • 如果符号被定义过,则编译包裹的代码
    • 否则不编译
  • 定义符号的方式
    • #define
    • 编译命令窗口定义define
  • 取消符号定义:#undef

3.3.2 调试

  • #if DEBUG … #endif
    • IDE默认将DEBUG符号用于调试编译,RELEASE符号用于发布版

3.3.3 生成和关闭警告消息

  • #error、#warning
    • 编译时会有相应的提示信息
    • 作用
      • 主动标记有问题的代码,提醒开发人员注意
  • #pragma
    • 关闭与还原警告消息
    • #pragma warning disable 1030:取消1030警告
    • #pragma warning restore 1030:恢复1030警告
  • nowarn:1030
    • 编译时通过命令的方式进行使用
    • 编译器设置整个编译过程忽略1030警告

3.3.4 指定行号

  • 改变编译器在报告错误或警告时显示的行号
  • #line 12
    • 重设行号为12
  • #line default
    • 恢复实际行号

3.3.5 可视编辑器提示

  • #region … #endregion
    • IDE编辑器代码折叠
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值