c语言 # ##如何使用
元组是一种数据结构,包含固定大小的不可变,异构元素的有序有限序列。 当我们说元组中的元素是不可变的时,我们的意思是它们与无法更改的特定类型有关。
ValueTuple是C#7.0中引入的结构。 ValueTuple克服了元组的两个主要限制-即它们效率低下并且必须将它们引用为Item1,Item2等。也就是说,ValueTuples既具有性能,又可以由程序员选择的名称进行引用。 本文讨论了ValueTuples是什么以及如何在C#中使用它们。
[ 同样在InfoWorld上:如何在ASP.NET Web API中记录请求和响应元数据 ]
若要使用本文提供的代码示例,您应该在系统中安装Visual Studio 2019。 如果您还没有副本,则可以在此处下载Visual Studio 2019 。
在Visual Studio中创建控制台应用程序项目
首先,让我们在Visual Studio中创建一个.NET Core Console Application项目。 假设系统中已安装Visual Studio 2019,请按照以下概述的步骤在Visual Studio 2019中创建新的.NET Core控制台应用程序项目。
- 启动Visual Studio IDE。
- 点击“创建新项目”。
- 在“创建新项目”窗口中,从显示的模板列表中选择“控制台应用程序(.NET Core)”。
- 点击下一步。
- 在接下来显示的“配置新项目”窗口中,指定新项目的名称和位置。
- 单击创建。
这将在Visual Studio 2019中创建一个新的.NET Core控制台应用程序项目。在本文的后续部分中,我们将使用该项目与ValueTuples一起使用。
C#中的ValueTuple vs.Tuple
ValueTuple提供了一种轻量级类型,可用于从一个方法返回多个值。 与作为引用类型的元组不同,ValueTuple是具有优化语法和强大命名约定的值类型。 也不同于Tuple,ValueTuple中的字段是可变的。 结果,ValueTuple的性能远远优于Tuple。
并且,虽然元组中的属性是只读的(即,一旦创建它们就无法更改它们的值),但在创建后就可以更改ValueTuple中的属性。
安装System.ValueTuple NuGet软件包
在Visual Studio中创建控制台应用程序后,下一步应该安装必要的NuGet程序包。 您还可以从Visual Studio 2019 IDE中的NuGet程序包管理器安装System.ValueTuple程序包,或者可以输入以下命令通过.NET CLI安装此程序包。
dotnet add package System.ValueTuple
请注意,ValueTuple是.NET Framework 4.7的一部分。
[ 也在InfoWorld上:最佳的软件开发,云计算,数据分析和机器学习产品 ]
在C#中创建ValueTuple
您可以通过多种方式创建ValueTuple。 其中包括:
- 使用构造函数
- 使用创建方法
- 使用括号,
()
以下代码段说明了如何使用其构造函数创建ValueTuple。
ValueTuple<int, string, string> valueTuple =
new ValueTuple<int, string, string>(1, "Joydip", "Kanjilal");
您也可以使用Create方法创建ValueTuple。 以下代码段说明了如何实现此目的。
var valueTuple = ValueTuple.Create(1, "Joydip", "Kanjilal");
您可以在右侧为ValueTuple分配成员名称和相应的值,如下所示。
var author = (Id: 1, FirstName: "Joydip", LastName: "Kanjilal");
最后,您还可以使用括号创建和初始化ValueTuple。 以下代码段利用括号创建和初始化ValueTuple。
(int Id, string FirstName, string LastName) author = (1, "Joydip", "Kanjilal");
在C#中的ValueTuple中使用命名属性
ValueTuple还支持命名属性。 也就是说,您可以为ValueTuple的属性分配有意义的名称,而不是默认属性名称Item1,Item2,Item3等。 下面的代码段说明了如何为ValueTuple的属性分配名称。
(int Id, string FirstName, string LastName) author = (1, "Joydip", "Kanjilal");
从C#中的方法返回ValueType
与元组一样,您可以利用ValueTuple从方法中返回多个值。 以下代码段说明了如何从方法返回ValueTuple。
static (int, string, string) GetAuthor()
{
return (Id: 1, FirstName: "Joydip", LastName: "Kanjilal");
}
在C#中使用解构从ValueTuple中检索单个成员
您可以利用解构方法从ValueTuple中检索单个成员。 以下代码片段显示了如何完成此操作。
(int Id, string FirstName, string LastName) = GetAuthor();
注意,上一节中给出了GetAuthor方法。
[ 通过InfoWorld的App Dev Report新闻通讯了解软件开发中的热门话题 ]
最后,我指出可以使用System.Tuple和System.ValueTuple中的扩展方法将Tuple转换为ValueTuple,反之亦然。 下面的代码片段显示了如何将ValueTuple转换为Tuple。
var valueTuple = ValueTuple.Create(1, "Joydip", "Kanjilal");
var tuple = valueTuple.ToTuple();
ValueTuples提供比Tuples更简单的语法和更好的性能,并具有能够更改其数据成员并为其分配有意义的名称的优点。 简而言之,使用ValueTuples代替Tuples有很多充分的理由。
翻译自: https://www.infoworld.com/article/3528752/how-to-use-valuetuples-in-csharp.html
c语言 # ##如何使用