首页 > 编程语言 >c#入门-解构方法

c#入门-解构方法

时间:2023-10-10 10:47:22浏览次数:43  
标签:入门 Deconstruct c# 解构 var 方法 public out

解构方法

解构方法可以让实例能像元组一样被析构,或使用模式匹配的位置模式。
解构方法是公开无返回值的,名为Deconstruct的方法。所有参数均为out参数。

var a = new Task();
var (b, c) = a;

class Task
{
    public void Deconstruct(out int a, out int b) { a = b = 0; }
}

特殊语法只会寻找这个类里是否有名字,返回值,参数符合要求的方法。
如果找不到,那么扩展方法也会纳入寻找范围。

public static class Extend
{
    public static void Deconstruct(this  Range range,out Index start,out Index end)
    {
        start = range.Start;
        end = range.End;
    }
}
Range r = ..;
var (s, e) = r;

 

标签:入门,Deconstruct,c#,解构,var,方法,public,out
From: https://www.cnblogs.com/sexintercourse/p/17754012.html

相关文章

  • 微软正式发布 C# 10,支持.NET 6 和 Visual Studio 2022 (附更新内容大全)
    微软正式发布C#10,支持.NET6和VisualStudio2022(附更新内容大全)2022/2/1211:24:36 来源:IT之家 作者:潇公子 责编:潇公子评论:0IT之家 2月12日消息,据微软中国MSDN,宣布C#10作为.NET6和VisualStudio2022的一部分已经发布了。在这篇文章中,微软将介绍C#......
  • Educational Codeforces Round 152 (Div. 2) D. Array Painting(双指针)
    EducationalCodeforcesRound152(Div.2)D.ArrayPainting//思路:双指针找连续正数段//若段中出现2,则更新两头的0的情况,若为涂色则改为true//若无2,则优先更新左侧0,若左0已经为true,则更新右侧0//数组开头结尾特判#defineintlonglong#defineldlongdoubleusingnam......
  • oracle中to_char(), to_date() ,ROUND(),NVL(), DECODE(), EXTRACT()等函数的使用
    1.to_char()将时间日期按照指定的格式输出,得到的是字符串,而非date类型。只要被转换的是一个日期,yyyy,mm,dd中间加不加连接符,加什么连接符都可以2.todate()将字符串按照指定的格式输出,得到的是日期类型。第一个参数的yyyy,mm,dd之间有没有连接符。如果有,那么第二个参数必须有......
  • channel 通道错误的使用例子
    1.向已经关闭的通道发送值,引起panic错误packagemainimport"fmt"funcrecv(cchanint){ ret:=<-c fmt.Println("接收成功",ret)}funcmain(){ ch:=make(chanint) gorecv(ch)//启用goroutine从通道接收值 ch<-10 close(ch) ch<-9 fmt.Prin......
  • 【题解】Fibonacci-ish II
    传送门题目分析根据题目范围\(n\le30000\)并且此题可以离线维护这个很恶心的东西,所以我们考虑莫队。由于要求访问到任意一个区间都要求知道它有序之后的序列,所以这个东西可以用权值线段树维护。因此,此题正解是莫队+权值线段树。我们分类讨论一下加上一个数,删除一个数对答案......
  • C# 12 中的新增功能
    C#12中的新增功能 新的C#12功能在预览版中已经引入.您可以使用最新的VisualStudio预览版或最新的.NET8预览版SDK来尝试这些功能。以下是一些新引入的功能:主构造函数集合表达式默认Lambda参数任何类型的别名内联数组拦截器使用nameof访问实例成员......
  • centos8添加永久路由
    linux配置静态路由,一般使用iprouteadd添加临时路由,重启会丢失配置永久配置路由方法:touch/etc/sysconfig/network-scripts/route-ens192nmcliconnectionmodifyens192+ipv4.routes"10.0.3.0/24192.168.2.254"nmclicreloadnmclicupens192编辑脚本封装多个命令,一......
  • ftrace在应用上的使用
    之前介绍通过命令行配置和使用ftrace功能,但是实际中,我们也会希望抓C/C++程序中某段代码的调度情况。笔者前不久就遇到这种问题,某个函数调用时延概率超过100ms,是为什么?这时候就需要在他们代码中使能ftrace抓执行此函数时候,任务的调度情况。观察某段代码执行过程中的情况,ftrace提供......
  • 练习记录-cf-Educational Codeforces Round 156 (Rated for Div. 2)(A-C)
    好久没打了还是就出了三道不过还好没掉分A.SumofThree就是问能不能把一个数拆成三个不同的且都不能被三整除的数我的思路就是拆成1+2+一个大于等于4的数如果拆了后另一个数是%3==0那么我拆成1+4它肯定就不被整除然后判下相同#include<bits/stdc++.h>#defineclose......
  • Codeforces Round 902 (Div. 2) C. Joyboard 规律
    CodeforcesRound902(Div.2)C.Joyboard//思路:在k=1,k=2,k=3时有解//当k=1时为全0//当k=2时,若m>=n,则先是0然后为1~n,最后一位可以为n的倍数也符合,即n+m/n-1//若m<n则为1~m即m//当k=3时,只能在n+1位是第3个不同情况(大于n),且不能为n的倍数,即(m-n)-(m/n-1)//只......