问题标签 [generics]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6440 浏览

Java中类的双重泛型约束:扩展ConcreteClass & I

有没有办法在 Java 中定义一个类似于以下 C# 泛型约束的泛型约束?

我正在尝试这样做:

但是编译器抱怨“Class2”部分:类型参数不能跟随其他界限。

0 投票
3 回答
6428 浏览

在 VB ASP.NET 中使用泛型创建多维哈希表?

我需要创建一个多维(嵌套)哈希表/字典,以便我可以使用类似的语法

我知道我需要使用泛型,但我无法在 ASP.NET 2.0 中使用 VB 找出正确的语法,网上有很多 c# 示例,但它们并没有多大帮助。

干杯!

0 投票
1 回答
6281 浏览

是否可以使用 .NET 泛型类实现 COM 接口?

我有以下界面,我试图使 COM 可见。当我尝试生成类型库时,它不喜欢我的实现类派生自泛型类的事实。

是否可以将泛型类用作 COM 实现类?(我知道我可以编写一个非通用包装器并将其导出到 COM,但这增加了另一个我宁愿不做的层。)

错误信息:

0 投票
3 回答
1102 浏览

VB.NET 中的通用对象

我有一个声明如下的类:

我有继承这个类的类。

我有另一个类,我必须在这个方法中传递实例:

我需要将传入的对象存储在全局变量中,但我不能简单地声明它:

声明这个对象的语法是什么?

0 投票
7 回答
513 浏览

我可以使用列表吗作为方法指针的集合?(C#)

我想创建一个要执行的方法列表。每个方法都有相同的签名。我曾考虑将代表放在通用集合中,但我不断收到此错误:

“方法”是一个“变量”,但用作“方法”

理论上,这是我想做的:

关于如何做到这一点的任何想法?谢谢!

0 投票
17 回答
4089 浏览

C#中的冗余?

采取以下代码段:

冗余是语言设计者的意图吗?如果是这样,为什么?

0 投票
12 回答
225461 浏览

克隆/深度复制 .NET 通用字典的最佳方法是什么?

我有一本通用字典Dictionary<string, T>,我想从本质上制作一个 Clone() of ..any 建议。

0 投票
6 回答
5711 浏览

C# 中的泛型接口会防止装箱吗?(.NET 与 Mono 性能)

我有一个 C# 接口,其中某些方法参数声明为object类型。但是,传递的实际类型可能因实现接口的类而异:

MyClass2 的问题在于byte[]to 和 from的转换object装箱和拆箱,这是影响性能的计算量大的操作。

通用接口解决这个问题会避免装箱/拆箱吗?

这是如何在 .NET 与 Mono 中实现的?在这两个平台上都会有任何性能影响吗?

谢谢!

0 投票
3 回答
1772 浏览

有没有办法确定 Lua 函数的签名?

最近,Lee Baldwin展示了如何编写一个通用的可变参数记忆函数。我认为最好返回一个只需要一个参数的更简单的函数。这是我的虚假尝试:

显然,select('#', ...)在这种情况下失败了,无论如何也不会真正做我想做的事。有没有办法告诉内部memoize f期望多少个参数?


如果您确定,“不”是一个很好的答案。使用两个独立的memoize函数没什么大不了的。

0 投票
1 回答
28383 浏览

使用接口的隐式运算符

我有一个泛型类,我正在尝试为其实现隐式类型转换。虽然它主要工作,但它不适用于界面转换。经过进一步调查,我发现存在编译器错误:“用户定义的接口转换”适用。虽然我知道这应该在某些情况下强制执行,但我正在尝试做的事情似乎是一个合法的案例。

这是一个例子:

使用它的代码:

有谁知道解决方法,或者任何人都可以以令人满意的方式解释为什么我不能interfaceReferenceToBar隐式转换为Foo<IBar>,因为在我的情况下它没有被转换,而只包含在 Foo 中?

编辑: 看起来协方差可能会提供救赎。我们希望 C# 4.0 规范允许使用协方差隐式转换接口类型。