本文包含以下便捷语法:
out 变量
元组
占位符
is 模式表达式
switch 模式表达式
本地函数
二进制表示和数字分隔符
out 变量
以前,需要将 out 变量的声明、使用为两个不同的语句,如下所示:
int numericResult;
if (int.TryParse(input, out numericResult))
WriteLine(numericResult);
else
WriteLine("Could not parse input");
现在,可将前面两行合并为一行表示:
if (int.TryParse(input, out int result))
WriteLine(result);
else
WriteLine("Could not parse input");
虽然只比之前简洁了一点点,但,有总比没有好吧~
元组
元组是包含多个字段以表示数据成员的轻量级数据结构。
元组在作为 private 和 internal 方法的返回类型时是最有用的,元组为这些方法提供了简单的语法以返回多个离散值,不用再费心定义返回类型的 class 或 struct。
其注意事项如下:
新的元组功能需要 ValueTuple 类型。 为在不包括该类型的平台上使用它,必须添加 NuGet 包System.ValueTuple。
通过为每个成员赋值,可以创建一个元组, 此赋值会创建其成员为 Item1 和 Item2 的元祖,其使用方式与 Tuple 的相同。:
var letters = ("a", "b");
可更改语法,以创建为每个元组成员提供语义名称的元组,以下namedLetters 元组包含称为 Alpha 和 Beta 的字段。:
// 方式一
(string Alpha, string Beta) namedLetters = ("a", "b");
// 方式二
var namedLetters = (Alpha: "a", Beta: "b");
当用于方法的返回值时,使用方式如下(在一个整数序列中找到的最小值和最大值):
public (int Max, int Min) Range(IEnumerable<int> numbers) {
int min = int.MaxValue;
int max = int.MinValue;
foreach (var n in numbers) {
min = (n < min) ? n : min;
max = (n > max) ? n : max;
}
return (max, min);
}
看,这种方式是不是比以前更方便
放在以前,为了让返回值包含最大值和最小值,还需要创建一个类或结构体;当然,在返回值个数比较少时,依然可以使用 ref 或 out 来实现多个值的返回 |