C#语言规范及特殊用法笔记

前言

记录在学习C#过程中遇到的知识点,会持续更新。

1. 常用数据类型结构的默认值

创建类的一个实例时,在执行构造函数之前,如果没给成员变量赋初始值,C#编译器将每一个成员变量初始化为默认值。虽然C#编译器为每个类型都设置了默认类型,但作为面向对象的设计原则,还是需要对变量进行正确的初始化。
如果变量是方法的局部变量,编译器会认为在使用该变量之前,必须给它显示的设定一个值。否则会发生“使用了未赋值的局部变量”的错误。
对于其他情况,编译器会在创建变量时,把变量初始化为默认值。
常用数据类型的默认值如下:

  • 对于整型、浮点型,默认值为: 0或0.0
  • 字符类型的默认值为: \x0000(空字符)
  • 布尔类型的默认值为: false
  • 引用类型的默认值为: null
  • 枚举类型(enum)默认值是该枚举的第一个元素的默认值
  • 结构体(struct)默认会将所有的值类型成员初始化为它们的默认值
  • 数组会被初始化为引用类型的默认值:null
  • 类类型(class)默认值为 null
2. 可空类型和“??”、“?.”的用法说明

可空类型是指可以对非引用类型变量赋值“null”,语法为:

System.Nullable<int> a; 
a = null";
// 以上两句等价于:
 int? a;

解决了 int a = null 会抛出错误的问题。当按照此方式定义时,变量a具有HasValue属性,bool类型,用来判别a是否有值,无值false有值true,有值时可使用Value属性:a.Value来调用其值。引用类型则不能如此操作(引用类型为null值时表示不存在对象)

??运算符被称为空接合运算符(null coalescing operator),是一个二元运算符,允许给可能等于null的表达式提供另一个值。如果第一个操作数不是null,该运算符就等于第一个操作数,否则,该运算符就等于第二个操作数。
a ?? b 等价于 a == null ? a : b

?.运算符通常称为空条件运算符,有助于避免繁杂的空值检查造成的代码歧义。
使用?.运算符,会把int? count设置为null,而不是抛出一个异常。

int? count = customer.orders?.Count();
// 结合??运算符和?.运算符,可以在结果为null时设置一个默认值
int? count = customer.orders?.Count() ?? 0; 

未完待续……

参考资料

相关推荐

  1. C#语言规范特殊用法笔记

    2024-03-27 05:32:04       46 阅读
  2. 华为C&C++语言编程规范--笔记

    2024-03-27 05:32:04       39 阅读
  3. C语言自学笔记3-----C语言运算符优先级

    2024-03-27 05:32:04       41 阅读
  4. C语言代码编码规范

    2024-03-27 05:32:04       62 阅读
  5. 专升本 C语言笔记-02 标识符 命名规范 关键字

    2024-03-27 05:32:04       44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-27 05:32:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-27 05:32:04       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-27 05:32:04       82 阅读
  4. Python语言-面向对象

    2024-03-27 05:32:04       91 阅读

热门阅读

  1. Python中类(class)的使用方法

    2024-03-27 05:32:04       36 阅读
  2. React Native获取及监听网络状态

    2024-03-27 05:32:04       40 阅读
  3. docker 安装 kibana

    2024-03-27 05:32:04       45 阅读
  4. python项目练习——4.手写数字识别

    2024-03-27 05:32:04       45 阅读
  5. eclipse启动报错

    2024-03-27 05:32:04       39 阅读
  6. 阿里云子域名配置,且不带端口访问

    2024-03-27 05:32:04       41 阅读
  7. 面试算法-109-移除元素

    2024-03-27 05:32:04       34 阅读
  8. ADC456456

    2024-03-27 05:32:04       42 阅读