C# 类的解构

C#对类的解构,必须在该类内实现Deconstruct方法,并且返回类型为void ,并用out参数返回各个部分。

using System;
using System.Text;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            (int c, int d) = new Person();
            Console.WriteLine(c);
            Console.WriteLine(d);
        }
    }

    class Person
    {
        public void Deconstruct(out int a,out int b)
        {
            a = 122;
            b = 1;
        }
    }
}

原文地址:https://www.cnblogs.com/mlh1421/p/11516872.html

时间: 2024-10-30 02:25:46

C# 类的解构的相关文章

类(2)- 解构函数和垃圾收集

定义了一个类后,我们就可以new任何数量的对象.此时,将产生托管堆和栈上的内存分配,堆上将开辟一块新的空间负责储存类对象,而栈上仅仅储存引用.一般来说,垃圾收集和内存管理仅仅是相对于托管堆而言的.而c#的内存管理非常方便-就是根本不用管理,垃圾收集器将负责所有的工作.对于垃圾收集,有几个问题需要明确. 什么是垃圾:通常来说,某个对象如果在代码的任何部分都不可访问的时候,就将其视为垃圾. 垃圾收集器何时工作:当它认为需要的时候(下文详解)或者用户呼叫. 垃圾收集器不会理会非托管资源,那么怎么办:自

ES6解构赋值

前面的话 我们经常定义许多对象和数组,然后有组织地从中提取相关的信息片段.在ES6中添加了可以简化这种任务的新特性:解构.解构是一种打破数据结构,将其拆分为更小部分的过程.本文将详细介绍ES6解构赋值 引入 在ES5中,开发者们为了从对象和数组中获取特定数据并赋值给变量,编写了许多看起来同质化的代码 let options = { repeat: true, save: false }; // 从对象中提取数据 let repeat = options.repeat, save = option

三个角度解构云计算,商业驱动or技术驱动?

从云计算的使用者到云服务的输出者,大多互联网公司在过去一年完成了角色的转换,也让云计算的未来更加扑朔迷离.不过,抛却进入时间这个评判因素,单从技术和商业化的角度来解构云计算的话,对于云计算的格局以及未来可能的竞争局面,似乎并非那么模糊不清. 第一类玩家:商业驱动技术 之前在互联网圈流行着这样一个段子,如何打造一个牛逼的产品,在研发.产品.投入等都不给力的情况下,最后的担子居然落到了公关头上.事实上,云计算行业也存在这样的玩家,更准确的形容是商业驱动技术的类型.简单来说就是,先在商业上画一张饼,然

解构、参数、模块和记号

解构.参数.模块和记号(续) 六.解构 解构提供了一个方便的地从对象或数组中提取数据的方法,请看下面的例子: 1 2 3 4 5 6 7 //ES6 let [x,y]=[1,2];//x=1,y=2 //ES5 var arr=[1,2]; var x=arr[0]; var y=arr[1]; 使用这个语法,可以一次性给多个变量赋值.一个很好的附加用处是可以很简单的交换变量值: 1 2 3 let x=1,y=2; [x,y]=[y,x];x=2 y=1 解构也可以用于对象,注意对象中必须存

解构《穹顶之下》:新媒体形态如何重构传统媒体基因

3月1日,今天北京的空气质量指数(AQI)96,空气质量状况为"良",这比前一天重度污染的雾霾天算是略有了好转.但关于此话题的关注度和讨论热烈指数并没因此而下降. 2月28日,柴静将其采访.录制了一年的雾霾污染调查类专题纪录片<穹顶之下>正式推向公众,并迅速引发全民热议,成为2015年第一场公众事件. 公开数据显示,从上午10点正式发布到晚20点左右,该视频播放量腾讯2620万.3267条评论:优酷为401万.9088条评论:搜狐76万.172条评论:乐视305万.3条评论

ES6学习总结之 解构赋值

变量的解构赋值 1.数组解构赋值 1.1 基本用法 ES6允许按照一定模式,提取数组或对象的值,对变量赋值,称之为解构赋值 以往对变量赋值如下: var a=10; var b=20; var c=30; ES6中可写成以下形式: var [a,b,c] = [10,20,30]; 这种写法属于"模式匹配",只要等号两边的模式对应,右边的值便会赋予左边对应的变量. 注意下面的写法: // ... 是扩展运算符,代表剩余所有参数 var [a, ...b] = [1,2,3,4]; a

解构控制反转(IoC)和依赖注入(DI)

1.控制反转 控制反转(Inversion of Control,IoC),简言之就是代码的控制器交由系统控制,而不是在代码内部,通过IoC,消除组件或者模块间的直接依赖,使得软件系统的开发更具柔性和扩展性.控制反转的典型应用体现在框架系统的设计上,是框架系统的基本特征,不管是.NET Framework抑或是Java Framework都是建立在控制反转的思想基础之上. 控制反转很多时候被看做是依赖倒置原则的一个同义词,其概念产生的背景大概来源于框架系统的设计,例如.NET Framework

构造、解构、拷贝语意学

一 "无继承"情况下的对象构造 考虑下面程序片段: 1 2 3 4 5 6 7 8 9 10 11 Point glocal; //全局内存配置 Point foobar() {    Point local;//局部栈内存配置    Point *heap=new Point;//heap内存配置    *heap=local;        delete heap;    return local; } 1 把Point类写成c程序,c++标准说这是一种所谓的Plain OI Da

妙用ES6解构和扩展运算符让你的代码更优雅

Javascript ES6/ES2015尘埃落定,其中许多特性其实是为了简化代码.解构运算符,扩展运算符,和rest运算符就是其中很好的特性,它们可以通过减少赋值语句的使用,或者减少通过下标访问数组或对象的方式,使代码更加简洁优雅,可读性更佳.现在各浏览器及node.js都加快了部署ES6的步伐.ES6的学习正当其时. 解构 解构的作用是可以快速取得数组或对象当中的元素或属性,而无需使用arr[x]或者obj[key]等传统方式进行赋值 数组解构赋值: var arr = ['this is