C#里??和?.的用法
时间: 2024-06-28 14:00:18 浏览: 115
C# 运算符 ?、??、?: 各种问号的用法和说明
在C#中,`??`(Null-coalescing operator)和`.`(Property or indexer accessor)是两种不同的操作符,用于处理可能为null的对象引用。
1. **Null-coalescing operator (`??`)**:
- 这是一个三元运算符,也称为空合并运算符。当你有一个可能为null的对象,并且需要访问其中的某个属性或方法,但不想抛出`NullReferenceException`时,可以使用它。
- 语法:`expression1 ?? expression2`
- 当`expression1`为null时,会返回`expression2`的值。否则,返回`expression1`的值。
- 示例:`string name = person?.Name ?? "Not provided";`
- 如果`person`为null,`name`将被赋值为" Not provided",否则取`person.Name`的值。
2. **Property or indexer accessor (`.`)**:
- 这个操作符用于访问对象的属性或索引器。当你有对对象的引用时,使用`.`可以直接获取其属性的值或数组元素。
- 例如:`int value = myObject.Value;`
- 或者:`string element = myArray[index];`
- 如果试图访问null引用的对象的属性,会直接抛出`NullReferenceException`。
**相关问题--:**
1. `??`操作符在什么情况下会被优先使用?
2. 什么时候你会使用`?.`而不是直接访问属性,即使对象不为null?
3. 如何避免在使用`.`时引发`NullReferenceException`?
阅读全文