首页 > 编程语言 >C#7的解构

C#7的解构

时间:2023-12-12 19:22:19浏览次数:29  
标签:string C# age sex 解构 out name

C#7的解构

C#7的解构

瓦力 瓦力 努力,奋斗  

C#7提供的解构功能需要和元组配合使用,这里的元组不是Tuple类型,而是ValueTuple类型。

我们这里提供一个示例了解一下这个功能:

class User
    {
        public User(string name, string sex, int age)
        {
            Name = name;
            Sex = sex;
            Age = age;
        }

        public string Name { get; }
        public string Sex { get; }
        public int Age { get; }

        public void Deconstruct(out string name, out string sex)
        {
            name = Name;
            sex = Sex;
        }

        public void Deconstruct(out string name, out string sex, out int age)
        {
            name = Name;
            sex = Sex;
            age = Age;
        }
    }
}

 class Program
    {
        static void Main(string[] args)
        {
            (string name, string sex, int age) = new User("wallee", "1", 19);
            Console.WriteLine($"{name},{sex},{age}");
        }
    }

根据以上代码我们说明解构的使用说明:

1、定义类解构使用固定的关键字Deconstruct,方法参数需要使用out表明在离开Deconstruct之前必须对参数进行赋值。out参数必须。

2、需要使用元组类型来接受解构结果。

3、解构方法可以重载。

除此以外,元组也支持解构,语法是:

(string name, string sex, int age) = new User("wallee", "1", 19);
Console.WriteLine(name);
Console.WriteLine(sex);
Console.WriteLine(age);

 

编辑于 2021-12-07 15:13

标签:string,C#,age,sex,解构,out,name
From: https://www.cnblogs.com/sexintercourse/p/17897642.html

相关文章

  • 记录--Echarts绘制气泡图
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助Echarts绘制气泡图气泡图是一种用于可视化三维数据的图表类型,其中两个变量用于确定数据点在平面上的位置,另一个变量用于确定气泡的大小。Echarts是一款基于JavaScript的数据可视化库,它提供了丰富的图表类型,包括灵......
  • 将QWebEngineView添加到QStackedWidget或QTabWidget中导致切换按钮失效的解决方案
    问题描述:将QWebEngineView添加到QStackedWidget或QTabWidget中导致切换按钮失效,如果只有两个来回切的话,是没有问题的,当出现多个页面的时候,就会切换失灵。解决思路:将QWebEngineView浮到上面,只要实现大小、位置、显示隐藏与主页面同步即可。 QWebEngineView窗口构造窗口添加:se......
  • flutter iOS 使用BasicMessageChannel 通信
    flutter代码//main.dartimport'package:flutter/material.dart';import'package:flutter/services.dart';voidmain(){runApp(constMyApp());}classMyAppextendsStatelessWidget{constMyApp({Key?key}):super(key:key);@o......
  • go-zero开发入门之网关往rpc服务传递数据
    go-zero的网关往rpc服务传递数据时,可以使用headers,但需要注意前缀规则,否则会发现数据传递不过去,或者对方取不到数据。go-zero的网关对服务的调用使用了第三方库grpcurl,入口函数为InvokeRPC:grpcurl.InvokeRPC(r.Context(),source,cli.Conn(),rpcPath,s.prepareMetadat......
  • AtCoder Beginner Contest 332
    AtCoderBeginnerContest332A-OnlineShopping代码:#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintN=1e6+10;typedefpair<ll,ll>pii;voidsolve(){intn,s,k;cin>>n>>s>>......
  • CF1610H Squid Game
    题意给定一棵树,以及\(m\)条路径。让你选出最少的点,使得对于每一条路径,都有一个点距离链上的点离端点更近。Sol考虑将每一条路径分为直链和曲链考虑。注意到所有的曲链最多对答案有\(1\)的贡献。考虑直链的情况。注意到一个很显然的东西。对于一个选择的点,如果她的上方......
  • 【Centos】Centos 7.6 安装 Maven 3.6.3
    1  前言继续安装我们的Maven3.6.3,为了给安装Nacos做铺垫。https://archive.apache.org/dist/maven/maven-3/2 安装步骤2.1 下载压缩包wgethttps://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz2.2 解压缩tar-zx......
  • Time slice based task routine in C
          基于时间片的轮询任务调度实例。#include<stdint.h>#include<stdio.h>#include<WinSock2.h>#defineMAX_TASK_NUM10#defineMAX_HALF_WORD0xffff#definefalse0#definetrue1staticuint16_tg_ti......
  • 使用C++和QT实现Log自定义日志系统
    MyLog说明使用QT的qInstallMessageHandler函数结合qDebug,qInfo实现自定义的日志系统输出日志到文件和控制台自动检测日志文件大小自动更新日志文件修改日期自动备份自动删除一个月前的日志文件支持多线程程序支持扩展,可输出日志到数据库,网络,或服务器支持扩展,可使用co......
  • Codeforces Round 809 (Div. 2)
    基本情况A题秒了。B题卡了很久,最后过了。C来不及了。B.MakingTowersProblem-B-Codeforces卡题分析最初想法其实已经推出来下标差为奇数才能构成高塔了。但是思维固化,认为这个问题就必须用LIS那类做法做,然后硬打了一个\(\operatornameO(n^2)\)的DP,然后就TLE......