揭秘:C#语法中“_ =” 是什么?

在C#中,`_ =` 是一种使用未赋值变量的模式,通常与 `out` 参数或 `discard` 一起使用。


1. `out` 参数
在C# 7.0及以后的版本中,当你调用一个方法并且不想使用它的所有 `out` 参数时,可以使用 `_` 来忽略特定的 `out` 值。这在调用某些需要多个 `out` 参数但只对其中一些参数感兴趣的方法时非常有用。

例如,考虑以下方法,它返回一个布尔值并有两个 `out` 参数:

```csharp
(bool success, int number, string message) TryGetNumberAndMessage(out int number, out string message);
```


如果你只关心 `success` 和 `message`,可以这样调用:


```csharp
if (TryGetNumberAndMessage(out _, out string message))
{
    Console.WriteLine($"Success with message: {message}");
}
```

在这里,`out _` 表示我们不关心 `number` 参数的值。

 2. Discard
C# 7.0引入了一个新的概念叫做 "discard",它是一个只读的只用于赋值的变量。它用于当你需要从方法调用中丢弃一个值,但仍然需要提供一个变量来接收它。

例如,当你调用一个返回元组的方法,并且只对元组中的某些元素感兴趣时:

```csharp
(string name, int age) GetPersonInfo();
```


你可以这样使用丢弃的变量:


```csharp
var person = GetPersonInfo();
Console.WriteLine($"Name: {person.name}, Age: {person.age}");
```

在这个例子中,`person` 是一个元组,我们可以直接访问它的属性,但我们没有使用 `_`。

如果我们只对 `name` 感兴趣,可以这样写:

```csharp
(_, string name) = GetPersonInfo();
Console.WriteLine($"Name: {name}");
```

在这里,第一个元素被丢弃,我们只接收了 `name`。

注意事项
- `_` 不是一个有效的变量名,不能用于常规变量声明或赋值。
- `_` 仅用于 `out` 参数或丢弃的变量,以简化代码并避免不必要的变量声明。

这种语法是C#语言中一种优雅的方式来处理不需要的值,使代码更加简洁和清晰。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值