1
6
我在C中实现了一个元组库。参观 http://www.adventuresinsoftware.com/generics/ 单击“tuples”链接。 |
2
20
建筑类在某些特定的情况下,.NET框架已经提供了类似tuple的类,您可以利用它们。 成对和三倍 通用的 System.Collections.Generic.KeyValuePair 类可以用作特殊对实现。这是那个 通用字典在内部使用。 或者,您可以使用 System.Collections.DictionaryEntry 作为基本对的结构,具有 在mscorlib中可用。然而,从反面来看,这种结构不是 强类型的。 双和三重的形式也可以 System.Web.UI.Pair 和 System.Web.UI.Triplet 类。即使这些班级生活在 网络系统 装配 它们可能非常适合WinForms开发。但是,这些类是 也不是强类型,可能不适用于某些场景,例如通用框架或库。 高阶元组 对于高阶元组,如果没有滚动您自己的类,可能 不是简单的解决方案。 如果安装了 F# language ,您可以参考 FSARP.COR.DLL 包含一组不可变的泛型 Microsoft.Fsharp.Core.Tuple 班 最多通用六元组。然而,即使是一个未经修改的 FSARP.CODE.DLL 可以重新分配,F是一种研究语言,也是一项正在进行的工作,因此 这一解决方案可能只在学术界引起关注。 如果你不想创建自己的类,并且感到不舒服 引用F库时,一个巧妙的技巧是扩展通用的keyValuePair类,以便值成员本身是嵌套的keyValuePair。 例如,下面的代码说明了如何利用 要创建三元组,请执行以下操作:
这允许根据需要将类扩展到任意级别。
翻滚你自己在其他情况下,您可能需要求助于滚动自己的 tuple类,这并不难。 您可以创建这样的简单结构:
框架与库这个问题以前已经解决过,通用框架 确实存在。以下是一个此类框架的链接: |
3
12
|
4
11
快进到2010年,.NET 4.0现在支持 n-tuples of arbitrary n . 这些元组按预期实现结构相等和比较。 |
6
3
我通常只是创建自己的结构,包含值。它通常更易于阅读;) |
7
2
键值空气 如果不想创建自己的类,则是要扩展的最佳类。
您可以将其扩展到任意级别。
注释 班级 三重态 和 一对 存在于 网络系统 -动态链接库,因此它不太适用于ASP.NET以外的其他解决方案。 |
8
2
您可以相对容易地创建自己的tuple类,唯一可能导致混乱的是您的相等性和哈希代码重写(如果您要在字典中使用它们,则是必需的)。
应该注意,.NET是自己的
假设这对您来说不是一个问题,那么代码最终还是很难理解的问题:
在大多数情况下,我发现创建一个特定的记录类更容易(至少直到C 4使这个编译器变魔术为止)
|
9
2
一个简单的解决方案尚未被提及。您也可以使用
|
10
1
nGenerics是最流行的.NET算法和数据结构库,最近已经推出 不变的 集合的数据结构。 第一个不可变的实现是 一对 和 元组 类。代码被测试覆盖得很好,非常优雅。你可以查一下 here . 他们目前正在研究其他不变的替代方案,应该很快就准备好了。 |
11
0
没有内置的,但是创建一对lt;t、r>类是很简单的。 |
12
0
是的,有system.web.ui.pair和system.web.ui.triplet(它有一个重载的成对类型行为创建者!) |
13
0
对于第一种情况,我通常使用
|
14
0
没有为此而内置的类。你可以使用 KeyValuePair 或者自己展开实现。 |
15
0
可以使用System.Collections.Generic.KeyValuePair作为对实现。 或者你可以实现你自己的,它们并不难:
当然,有一天你可能会遇到一个问题,即三重(string,int,int)与三重(int,int,string)不兼容。可能改为使用system.xml.linq.xelement。 |
16
0
在F中还有tuple<>类型,您只需要引用fsharp.core.dll即可。 |
mars · 将值作为元组对字典进行排序 2 年前 |
pkpto39 · 带元组的Numpy平均值 2 年前 |
Symbal · 如何在更正if语句之前打印X行 6 年前 |
user9689131 · 如何确定一组元组中的公共元素-Python 6 年前 |
Oxana Verkholyak · 为元组数组创建布尔掩码 6 年前 |
user9644895 · 从列表中的元组返回具有流量强度的日期 6 年前 |
user9641453 · Python列表理解:列表索引超出范围 6 年前 |