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 是只读的。  

  • 相关阅读:
    h5自定义播放器得实现原理
    this a sao
    Winform(C#)输入完毕后,按Enter键触发Button事件
    解析xml文件,C# 获取所有节点的属性值
    xml节点和元素的关系
    C#中DataGridView控件使用大全
    Linq To Xml操作XML增删改查
    winform中如何选中datagridview中的一行数据双击后跳转并将其显示在另一个页面的datagirdview中
    Winform中的dataGridView添加自动编号
    C# winform 主界面打开并关闭登录界面
  • 原文地址:https://www.cnblogs.com/yetsen/p/13428211.html
Copyright © 2011-2022 走看看