如何使用括号对数据进行分组?
How does grouping data with parentheses work?
我最近遇到了这个:
(int, string) tst = (0, "Test");
它背后的想法看起来很神奇,之前每当我想映射两个变量时,我都会使用 KeyValuePair。这似乎在 .NET Core 中可用,但在我主要编程的常规 .NET 4.7.2 中不可用。
我是不是遗漏了什么,或者这只适用于 .NET Core?这个变量分组的名称是什么(以便我可以进一步研究)?它与创建具有两个变量的对象一样吗?
这是一个例子:
(int, string) tst = (0, "Test");
var (k, b) = tst;
Console.WriteLine("k: " + k);
Console.WriteLine("b: " + b);
这是一个愚蠢的问题,但感谢您的帮助。
您正在查看 C# 7.0 中的 Tuples in the code in OP. Tuples were available before C# 7.0 too, but the improvements in Tuples (with introduction of ValueTuples) 意味着,可以对元组的字段使用语义名称,如示例中所示。
(int, string) tst = (0, "Test");
在上面的代码中,元组被解包并分配给 tst
变量。这被称为 decontructing
元组。
考虑 OP
中的以下代码
(int, string) tst = (0, "Test");
var (k, b) = tst;
您可以将其合并为
var (k, b) = (0, "Test");
您也可以在用户定义类型中使用 Deconstruct。例如,考虑以下代码
public class User
{
public string FirstName{get;set;}
public string LastName{get;set;}
public int Age{get;set;}
}
为了支持上述class中的Deconstruct,您可以添加如下方法。
public class User
{
public string FirstName{get;set;}
public string LastName{get;set;}
public int Age{get;set;}
public void Deconstruct(out string fName,out string lName,out int age)
{
fName = FirstName;
lName = LastName;
age = Age;
}
}
Deconstruct 方法现在使我们能够在 Class 用户中支持解构。您现在可以编写类似于 Tuple Deconstruct 的代码。例如,
var user = new User{FirstName = "John", LastName="Doe",Age=50};
var (fName,lName,age) = user;
我最近遇到了这个:
(int, string) tst = (0, "Test");
它背后的想法看起来很神奇,之前每当我想映射两个变量时,我都会使用 KeyValuePair。这似乎在 .NET Core 中可用,但在我主要编程的常规 .NET 4.7.2 中不可用。
我是不是遗漏了什么,或者这只适用于 .NET Core?这个变量分组的名称是什么(以便我可以进一步研究)?它与创建具有两个变量的对象一样吗?
这是一个例子:
(int, string) tst = (0, "Test");
var (k, b) = tst;
Console.WriteLine("k: " + k);
Console.WriteLine("b: " + b);
这是一个愚蠢的问题,但感谢您的帮助。
您正在查看 C# 7.0 中的 Tuples in the code in OP. Tuples were available before C# 7.0 too, but the improvements in Tuples (with introduction of ValueTuples) 意味着,可以对元组的字段使用语义名称,如示例中所示。
(int, string) tst = (0, "Test");
在上面的代码中,元组被解包并分配给 tst
变量。这被称为 decontructing
元组。
考虑 OP
中的以下代码(int, string) tst = (0, "Test");
var (k, b) = tst;
您可以将其合并为
var (k, b) = (0, "Test");
您也可以在用户定义类型中使用 Deconstruct。例如,考虑以下代码
public class User
{
public string FirstName{get;set;}
public string LastName{get;set;}
public int Age{get;set;}
}
为了支持上述class中的Deconstruct,您可以添加如下方法。
public class User
{
public string FirstName{get;set;}
public string LastName{get;set;}
public int Age{get;set;}
public void Deconstruct(out string fName,out string lName,out int age)
{
fName = FirstName;
lName = LastName;
age = Age;
}
}
Deconstruct 方法现在使我们能够在 Class 用户中支持解构。您现在可以编写类似于 Tuple Deconstruct 的代码。例如,
var user = new User{FirstName = "John", LastName="Doe",Age=50};
var (fName,lName,age) = user;