c# - 拥有具有 2 种数据类型的强类型数组的最简单方法?

标签 c#

我不想要任何排序或任何花哨的东西。我只想要 2 列,左边是名称,右边是数字。

像这样:

string/int[,] myArray = new string/int[,]();

每个字符串都有一个对应的整数。但我不希望它用于排序或其他任何东西。我知道我可以使用字典和其他我知道如何使用的高级方法。我想变得简单 我想以最简单的形式了解如何制作具有 2 种类型的数组。我能想到的最简单的方法是只使用对象,然后再显式转换。有更简单的方法吗?

最佳答案

最简单的方法是使用 Tuple类(class)。您可以使用 Tuple使用通用参数组合类以形成元组。例如,Tuple<string, int>Tuple<string, int, int?, char> . Here是 2 参数版本的文档。在您描述的情况下,您可能需要一个 Tuple<string, int>[] 类型的实例.

您可以访问 Tuple 的元素使用 ItemX方法:myTuple.Item1 , myTuple.Item2

为了实际创建元组,我建议使用 Tuple.Create方法。例如:Tuple.Create("hello", 1)将返回 Tuple<string, int>项目设置正确。这些Create方法允许您省略通用参数。

作为旁注,您提到您不需要排序。通过对新的 Tuple<string, int> 执行 LINQ 查询,您可以很容易地进行任意排序。 (它实现了 IEnumerable<Tuple<string, int>> ,因此您可以对其执行 LINQ 的 IEnumerable 扩展)。例如,为了按 int 订购部分然后是元组的字符串部分,你可以这样做:

 myTupleArray.OrderBy(t => t.Item2).ThenBy(t => t.Item2);

另请参阅 OrderByDescendingThenByDescending更多选项。

关于c# - 拥有具有 2 种数据类型的强类型数组的最简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17226827/

相关文章:

c# - CoCreateInstance 异常。在静态库上使用 REGSVR32 进行类注册?

c# - .net 应用程序在 1 MB 的进程资源管理器中开始挂起时被阻止

c# - 如何在代码中的 TextBlock 中添加超链接?

c# - 是否可以在 linq where 中使用 OfType?

c# - Blazor 添加 HttpClientHandler 以将 Jwt 添加到请求的 HTTP header

c# - 每个 Asp.net 回发中的 JQuery BlockUI 进度指示器

c# - 在移动设备上忽略网格上的滑动

c# - 用 Epplus 寻找值(value)

c# - 将字符串转换为自定义日期格式 - C# razor

c# - 为什么 asp.NET 配置文件的设计方式如此糟糕?