![]() |
1
6
内置类在某些特定情况下,.net框架已经提供了类似元组的类,您可以利用这些类。 成对和三重 通用的 System.Collections.Generic.KeyValuePair 类可以用作即席对实现。这是一个班级 通用字典内部使用。 或者,你也可以凑合着用 System.Collections.DictionaryEntry 作为基本配对的结构,具有以下优点 在mscorlib中可用。然而,不利的一面是,这种结构不是 强烈类型。 双人和三人组也有以下形式 System.Web.UI.Pair 和 System.Web.UI.Triplet 班级。尽管这些班级生活在 系统。网络 会议 它们可能非常适合winforms开发。然而,这些课程是 也不是强类型,在某些情况下可能不适合,例如通用框架或库。 高阶元组 对于高阶元组,除了滚动自己的类之外,可能还有 这不是一个简单的解决方案。 如果您已安装 F# language ,你可以参考 FSharp。Core.dll 它包含一组通用的不可变变量 Microsoft.Fsharp.Core.Tuple 班 直到通用的六元组。然而,即使未经修改 FSharp。Code.dll 可以重新分发,F#是一种研究语言,也是一项正在进行的工作,因此 这种解决方案可能只会引起学术界的兴趣。 如果你不想创建自己的类并且感到不舒服 引用F#库,一个巧妙的技巧可能是扩展通用的KeyValuePair类,使Value成员本身就是一个嵌套的KeyValuePair。 例如,以下代码说明了如何利用 KeyValuePair用于创建Triples:
这允许根据需要将类扩展到任何任意级别。
手卷烟在其他情况下,您可能需要自行滚动 元组类,这并不难。 你可以这样创建简单的结构:
框架与库这个问题以前已经解决过,通用框架 确实存在。下面是一个这样的框架的链接: |
![]() |
2
20
|
![]() |
3
12
快进到2010年。NET 4.0现在支持 n-tuples of arbitrary n 这些元组实现了预期的结构相等和比较。 |
![]() |
4
11
|
![]() |
5
9
我在C#中实现了一个元组库。参观 http://www.adventuresinsoftware.com/generics/ 然后点击“元组”链接。 |
![]() |
6
3
我通常只创建自己的结构,其中包含值。它通常更具可读性;) |
![]() |
7
2
键值对 如果你不想创建自己的类,它是最好的扩展类。
您可以将其扩展到任意级别。
笔记 :班级 三联 和 一对 存在于 系统。网络 -dll,因此它不太适合ASP以外的其他解决方案。网。 |
![]() |
8
2
你可以相对容易地创建自己的元组类,唯一可能变得混乱的是你的等式和哈希码重写(如果你要在字典中使用它们,这是必不可少的)。
应该指出的是。Net自己的
假设这对你来说不是问题,那么代码最终仍然很难弄清楚:
在大多数情况下,我发现创建特定的记录类更容易(至少在C#4使这个编译器变得神奇之前)
|
![]() |
9
2
一个简单的解决方案尚未被提及。你也可以只使用
|
![]() |
10
1
NGenerics-流行。Net算法和数据结构库,最近推出 不变的 将数据结构添加到集合中。 第一个实现不可变的是 一对 和 元组 班级。该代码经过了很好的测试,非常优雅。你可以查一下 here 。他们目前正在研究其他不可改变的替代方案,预计很快就会准备就绪。 |
![]() |
11
0
没有内置,但有一对<T、 R>创建类很简单。 |
![]() |
12
0
是的,有系统。网状物。UI。配对和系统。网状物。UI。Triplet(它有一个过载的Pair类型行为创建者!) |
![]() |
13
0
对于第一种情况,我通常使用
|
![]() |
14
0
没有内置的类。您可以使用 KeyValuePair 或者推出自己的实现。 |
![]() |
15
0
你可以使用系统。收藏。通用。KeyValuePair作为您的Pair实现。 或者你可以自己实现,它们并不难:
当然,有一天你可能会遇到Triple(string,int,int)与Triple(int,int,string)不兼容的问题。也许用系统。Xml。林克。取而代之的是XElement。 |
![]() |
16
0
还有Tuple<>F#中的类型;你只需要参考FSharp。Core.dll。 |
![]() |
A B · C#Excel自动调整列避免长文本时出错 4 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 4 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 4 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 5 月前 |