當前位置: 妍妍網 > 碼農

揭秘:C#語法中「_ =」 是什麽?

2024-06-22碼農

在C#中,`_ =` 是一種使用未賦值變量的模式,通常與 `out` 參數或 `discard` 一起使用。


1. `out` 參數
在C# 7.0及以後的版本中,當你呼叫一個方法並且不想使用它的所有 `out` 參數時,可以使用 `_` 來忽略特定的 `out` 值。這在呼叫某些需要多個 `out` 參數但只對其中一些參數感興趣的方法時非常有用。
例如,考慮以下方法,它返回一個布爾值並有兩個 `out` 參數:

```csharp(bool success, int number, string message) TryGetNumberAndMessage(outint number, outstring message);```如果你只關心 `success` 和 `message`,可以這樣呼叫:```csharpif (TryGetNumberAndMessage(out _, outstring message)){ Console.WriteLine($"Success with message: {message}");}```

在這裏,`out _` 表示我們不關心 `number` 參數的值。
2. Discard
C# 7.0引入了一個新的概念叫做 "discard",它是一個唯讀的只用於賦值的變量。它用於當你需要從方法呼叫中丟棄一個值,但仍然需要提供一個變量來接收它。
例如,當你呼叫一個返回元組的方法,並且只對元組中的某些元素感興趣時:

```csharp(string name, int age) GetPersonInfo();```你可以這樣使用丟棄的變量:```csharpvar person = GetPersonInfo();Console.WriteLine($"Name: {person.name}, Age: {person.age}");```

在這個例子中,`person` 是一個元組,我們可以直接存取它的內容,但我們沒有使用 `_`。
如果我們只對 `name` 感興趣,可以這樣寫:

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

在這裏,第一個元素被丟棄,我們只接收了 `name`。
註意事項
- `_` 不是一個有效的變量名,不能用於常規變量聲明或賦值。
- `_` 僅用於 `out` 參數或丟棄的變量,以簡化程式碼並避免不必要的變量聲明。
這種語法是C#語言中一種優雅的方式來處理不需要的值,使程式碼更加簡潔和清晰。