是否有可能在C#中解构一个元组,类似于F#?例如,在F#中,我可以这样做:
// in F#
let tupleExample = (1234,"ASDF")
let (x,y) = tupleExample
// x has type int
// y has type string
Run Code Online (Sandbox Code Playgroud)
是否有可能在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???
Run Code Online (Sandbox Code Playgroud)
或者我是否必须手动使用Item1,Item2?例如
// in C#
var tupleExample = Tuple.Create(1234,"ASDF");
var x = tupleExample.Item1;
var y = tupleExample.Item2;
Run Code Online (Sandbox Code Playgroud)
您可以使用解构,但您应该使用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;
Run Code Online (Sandbox Code Playgroud)
该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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
757 次 |
| 最近记录: |