c# ??和??=的例子
时间: 2023-11-21 17:56:29 浏览: 41
以下是C#中 ?? 和 ??= 运算符的例子:
1. ?? 运算符的例子:
```csharp
string str1 = null;
string str2 = str1 ?? "default value";
Console.WriteLine(str2); // 输出 "default value"
string str3 = "C#";
string str4 = str3 ?? "default value";
Console.WriteLine(str4); // 输出 "C#"
```
上述代码中,第一个例子中 str1 为 null,所以使用 ?? 运算符返回了默认值 "default value";第二个例子中 str3 不为 null,所以返回了原始值 "C#"。
2. ??= 运算符的例子:
```csharp
int? num1 = null;
num1 ??= 10;
Console.WriteLine(num1); // 输出 10
int? num2 = 20;
num2 ??= 10;
Console.WriteLine(num2); // 输出 20
```
上述代码中,第一个例子中 num1 为 null,所以使用 ??= 运算符将 num1 赋值为 10;第二个例子中 num2 不为 null,所以不会执行赋值操作,num2 的值仍为 20。
相关问题
c# ??!=和??的区别
在C#中,?? 运算符是空合并运算符,用于判断一个值是否为 null,如果为 null 则返回默认值。而 ??= 运算符是空合并赋值运算符,用于判断一个值是否为 null,如果为 null 则将默认值赋给该值。而 ??!= 运算符并不存在于C#中。
另外,C#中的字符串比较有多种方式,包括 == 运算符、!= 运算符、Compare 方法和 Equals 方法。其中,== 运算符和 Equals 方法都是用于比较两个字符串是否相等,但 == 运算符比较的是字符串的值,而 Equals 方法比较的是字符串的值和长度。而 != 运算符则是用于比较两个字符串是否不相等。Compare 方法则是用于比较两个字符串的大小关系,返回值为一个整数,表示两个字符串的大小关系。而 StringComparison 枚举类型则是用于指定比较的敏感区域性、是否区分大小写以及是否使用序号排序规则。
下面是一个例子,演示了字符串比较的不同方式:
```csharp
string str1 = "hello";
string str2 = "HELLO";
// 使用 == 运算符比较字符串
bool result1 = str1 == str2; // false
// 使用 Equals 方法比较字符串
bool result2 = str1.Equals(str2, StringComparison.OrdinalIgnoreCase); // true
// 使用 Compare 方法比较字符串
int result3 = string.Compare(str1, str2, StringComparison.OrdinalIgnoreCase); // 0
// 使用 != 运算符比较字符串
bool result4 = str1 != str2; // true
```
c# 操作符 ??=
C# 操作符 `??=` 是一个复合赋值运算符,用于将左侧的可空类型变量赋值给右侧的表达式,如果左侧的变量为 null,则将右侧的表达式的值赋值给左侧的变量。这个操作符的语法如下:
```
nullableVariable ??= expression;
```
其中,`nullableVariable` 是一个可空类型的变量,`expression` 是一个表达式。如果 `nullableVariable` 为 null,则将 `expression` 的值赋值给 `nullableVariable`,否则不执行任何操作。
例如,假设有一个可空类型的 int 变量 `x`,我们可以使用 `??=` 操作符来将其初始化为一个默认值:
```
int? x = null;
x ??= 0; // 如果 x 为 null,则将其赋值为 0
```
在上面的例子中,如果 `x` 为 null,则将其赋值为 0,否则不执行任何操作。