簡體   English   中英

解構一個C#元組

[英]Deconstruct a C# Tuple

是否有可能在C#中解構一個元組,類似於F#? 例如,在F#中,我可以這樣做:

// in F#
let tupleExample = (1234,"ASDF")
let (x,y) = tupleExample
// x has type int
// y has type string

是否有可能在C#中做類似的事情? 例如

// in C#
var tupleExample = Tuple.Create(1234,"ASDF");
var (x,y) = tupleExample;
// Compile Error. Maybe I can do this if I use an external library, e.g. LINQ???

或者我是否必須手動使用Item1,Item2? 例如

// in C#
var tupleExample = Tuple.Create(1234,"ASDF");
var x = tupleExample.Item1;
var y = tupleExample.Item2;

您可以使用解構,但您應該使用C#7來實現此目的:

消耗元組的另一種方法是解構它們。 解構聲明是將元組(或其他值)拆分為其部分並將這些部分分別分配給新變量的語法

所以以下內容在C#7中有效:

var tupleExample = Tuple.Create(1234, "ASDF");
//Or even simpler in C#7 
var tupleExample = (1234, "ASDF");//Represents a value tuple 
var (x, y) = tupleExample;

Deconstruct方法也可以是一個擴展方法,如果你想解構一個你不擁有的類型,這個方法很有用。 例如,舊的System.Tuple類可以使用像這樣的擴展方法 解構 :( C#7中的元組解構 ):

public static void Deconstruct<T1, T2>(this Tuple<T1, T2> tuple, out T1 item1, out T2 item2)
{
    item1 = tuple.Item1;
    item2 = tuple.Item2;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM