zoukankan      html  css  js  c++  java
  • 元组

    析构元组

    var (name, address, city, zip) = contact.GetAddressInfo();

    析构用户定义类型

    通过实现一个或多个 Deconstruct方法来析构该类型的实例

    public void Deconstruct(out string fname, out string mname, out string lname)

    使用扩展方法析构用户定义的类型

    该方法返回 void,且要析构的每个值由方法签名中的 out 参数指示

    public static void Deconstruct(this PropertyInfo p, out bool isStatic,
                                       out bool isReadOnly, out bool isIndexed,
                                       out Type propertyType)
    
    PropertyInfo prop = dateType.GetProperty("Now");
    var (isStatic, isRO, isIndexed, propType) = prop;

    推断元组元素名称

    元组元素的名称可通过在初始化元组时使用的变量进行推断:

    int count = 5;
    string label = "Colors used in the map";
    var pair = (count, label); // element names are "count" and "label"

    支持 == 和 !=

    两个元组具有相同数量的元素,且对于每个元组位置,可以使用 == 和 != 运算符对左右侧元组操作数中的相应元素进行比较

    (int a, byte b) left = (5, 10);
    (long a, int b) right = (5, 10);
    Console.WriteLine(left == right);  // output: True
    Console.WriteLine(left != right);  // output: False
    
    var t1 = (A: 5, B: 10);
    var t2 = (B: 5, A: 10);
    Console.WriteLine(t1 == t2);  // output: True
    Console.WriteLine(t1 != t2);  // output: False

    == 和 != 操作不会考虑元组字段名称。

    == 和 != 运算符将以短路方式对元组进行比较。  

      

    在匿名类型和元组类型之间进行选择

    主要区别
    “属性”访问修饰符类型自定义成员名称析构支持表达式树支持
    匿名类型 internal class ✔️ ✔️
    Tuple public class ✔️
    ValueTuple public struct ✔️ ✔️

    在元组和匿名类型之间进行选择时,需要考虑几个因素。 一般来说,如果不使用表达式树,并且你熟悉元组语法,请选择 ValueTuple,因为它们提供可灵活命名属性的值类型。 如果使用表达式树并且想要命名属性,请选择匿名类型。

     ValueTuple 类型是可变的,而 Tuple 是只读的。  

  • 相关阅读:
    7.服务器上用命令ffprobe看流质量
    filebeat记录
    Dubbo 一篇文章就够了:从入门到实战
    c/c++系列的运算符优先级总结
    动态单链表的传统存储方式和10种常见操作-C语言实现
    代码的规范化—高质量程序的结构(一)
    动态分配的顺序线性表的十五种操作—C语言实现
    IOS开发初步
    大数据方面一个博客
    Task not found in root project
  • 原文地址:https://www.cnblogs.com/yetsen/p/13428211.html
Copyright © 2011-2022 走看看