Board logo

标题: 温故之C# 便捷语法二(1) [打印本页]

作者: look_w    时间: 2019-3-8 19:10     标题: 温故之C# 便捷语法二(1)

本文包含以下便捷语法:

    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 来实现多个值的返回




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0