当前位置: 首页 > news >正文

做 网站 技术支持 抓获 互助省直部门门户网站建设

做 网站 技术支持 抓获 互助,省直部门门户网站建设,工商网,企业号怎么注册总目录 前言 该文来源于探索弃元的使用,由弃元了解到元组,由元组又了解到解构方法Deconstruct。 另外本文中 解构和析构一个意思,不要在意! 一、Deconstruct是什么? 1. 关于元组 如果我们想了解Deconstruct 的使用&…

总目录


前言

该文来源于探索弃元的使用,由弃元了解到元组,由元组又了解到解构方法Deconstruct。
另外本文中 解构和析构一个意思,不要在意!


一、Deconstruct是什么?

1. 关于元组

如果我们想了解Deconstruct 的使用,那么得先了解了元组的使用,如果不了解的可查看C#元组的使用;熟悉的可以跳过。

2.Deconstruct基本介绍

  • 解构器 Deconstruct 可以视为构造方法的逆过程
  • MSDN 上关于Deconstruct 有这么一段描述:
    除了 record 和 DictionaryEntry 类型,C# 不提供解构非元组类型的内置支持。 但是,用户作为类、结构或接口的创建者,可通过实现一个或多个 Deconstruct方法来析构该类型的实例。 该方法返回 void,且要析构的每个值由方法签名中的 out 参数指示。

二、解构元组

C#7.0新增了诸多功能,其中有一项是新元组(ValueTuple),它允许我们可以返回多个值,并且配合解构能更加方便的进行工作,如下面例子

        static void Main(string[] args){(var name, var age) = GetUser();Console.WriteLine($"name:{name}\t age:{age}");Console.ReadLine();}//该方法 返回类型为 元组 public static (string name, int age) GetUser(){return ("张三", 33);}

马上就会有人说了,这个没什么啊,这个方法返回的就是元组,用(var name, var age) 去接收值也都属于基操啊,无非就是多了个类型推断罢了。


(var name, var age) = GetUser(); 这个接受的过程,我称之为解构元组。之所以元组可以使用上面如此简洁的代码进行解构,是因为C#提供解构元组类型的内置支持。那么下面我们看下如果是我们自定义的类想要被解构呢?

三、解构对象

如果我们希望我定义的类也能被解构,我们需要知道用户作为类、结构或接口的创建者,可通过实现一个或多个 Deconstruct方法来析构该类型的实例。 该方法返回 void,且要析构的每个值由方法签名中的 out 参数指示。

1 创建类以及定义Deconstruct方法

  • 创建一个类、结构或接口
  • 定义一个或多个Deconstruct方法,方法名必须是Deconstruct
  • 该方法必须返回void ,参数列表中的每个参数必须是out ,还必须是public
	//1 创建一个Student 类public class Student{public string Name { get; set; }public int Age { get; set; }public string Sex { get; set; }//定义一个析构函数public void Deconstruct(out string name, out int age){name = Name;age = Age;}//Deconstruct 的重载,可以有多个public void Deconstruct(out string name, out int age, out string sex){name = Name;age = Age;sex = Sex;}}

2 使用元组 解构 Deconstruct方法的值
定义了解构函数如何使用呢?
我们通常使用元组来解构 Student这个类中解构函数的值。

        static void Main(string[] args){var student = new Student{Name = "张十八",Age = 18,Sex = "男"};// 通过两个参数的解构函数解构(var name, var age) = student;Console.WriteLine($"name:{name}\t age:{age}");//通过三个参数的解构函数解构(var name2,var age2,var sex2)= student;Console.WriteLine($"name:{name}\t age:{age}\t sex:{sex2}");}

我们发现这样的代码,更加的优雅,不需要通过student.Name这种形式将数据一个个的接受,而是可以定义解构函数,有选择性的一次性接受需要的数据

四、实例解构的对称性

实例解构与构造器的元组赋值有一种对称的美

    public class Point{int X;int Y;//构造函数public Point(int x, int y) => (X, Y) = (x, y);//解构函数public void Deconstruct(out int x, out int y) => (x, y) = (X, Y); }

结语

希望以上内容可以帮助到大家,如文中有不对之处,还请批评指正。


参考资料:
C#7.0中的解构功能—Deconstruct
快速使用C#解构器Deconstruct

http://www.yayakq.cn/news/781014/

相关文章:

  • 建立网站加强家园沟通和联系的利弊手机优化软件哪个好
  • 沈阳网站关键词优化公司绍兴专门做网站的公司
  • 毕业设计是做网站设计手机主题制作网站
  • 自己做的网站如何上传个人公司网页如何设计
  • 动易网站管理系统下载人社系统网站一体化建设方案
  • 怎么建立一个网站开展业务制作简历网站开发
  • 做网站除了广告还有什么收入的微信开发商
  • 搜一搜站长工具wordpress 打不开
  • 公司网站怎么发布文章国内最好的危机公关公司
  • seo学习网站建网站用什么软件好
  • 团购网站开发语言免费招聘网站有哪些
  • 购物网站建设 费用wordpress难用
  • 网站备案后会被注销吗手机做直播官方网站
  • 我想做服装网站怎么做自己做物流网站
  • 网站增值服务Dedecms手机网站源码
  • 免费的个人简历模板下载东莞网络优化排名
  • 有关小城镇建设的网站信主网站
  • 微网站建设招聘如何经营电商平台
  • windows 2003建设网站网站vr用什么做
  • 适合高中生做网站的主题免费网页推广
  • 网站开发支付宝提现江西建设安全网站
  • 阿里巴巴外贸网站首页建设一个旅游平台网站需要多少资金
  • 做微信公众号页面的网站用自己的电脑做服务器建网站
  • 网站本科5000元网站seo推广
  • 卖房子上哪个网站最好卖做网站 多少人
  • 常熟智能网站开发呼和浩特建设厅官方网站
  • 做理财的网站好天元建设集团有限公司济南第六建筑工程分公司
  • 主流网站关键词排名服务推广软文范例
  • 做pc端网站基本流程网站备案注销找哪个部门
  • 常用网站建设工具小程序如何开发