void Test(out int i) => i = 1;
Test(out _); // Хоть переменная "_" нигде не объявлена, в C# 7.0 эта строка
// не вызовет ошибки компиляции
var r = _; // error CS0103: The name '_' does not exist in the current context
如果我们不需要元组的所有值,它也可以用于解构(C# 7.0 中的另一个新特性)。
例子:
var Person = ("John", "Smith");
var (First, _) = Person; // Переменная "_" снова не объявлена
Debug.Print(First); // Выводит "John"
Debug.Print(_); // error CS0103: The name '_' does not exist in the current context
从 C# 7.0 开始,
_传递给的名称(下划线)out var用于表示空变量(丢弃运算符)。它旨在告诉编译器我们不需要返回值,以便它可以进行一些优化。例子:
如果我们不需要元组的所有值,它也可以用于解构(C# 7.0 中的另一个新特性)。
例子:
但是,当变量存在时,
_编译器的行为out var _是 undefined。PS:正如@maf-soft在评论中指出的那样,这里没有问题。如果有明确声明的范围,
_编译器会将代码视为旧版本。这个答案是MotKohn对“仅 C# 变量名“_”(下划线)问题的答案的松散翻译。