问题标签 [generic-method]

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 回答
13767 浏览

c# - 不指定类型的 C# 泛型方法

好的,所以我是一个开始使用 C# 的 Java 人,我正在编码并开始制作一个泛型方法,我写的东西可以运行和编译,但这与我所知道的关于泛型应该如何工作的一切背道而驰,所以我希望有人能解释一下对我来说:

所以我有一个通用方法定义如下:

但对我来说奇怪的是,我可以在不指定的情况下调用这个泛型方法T,它会起作用:

代码是如何在不指定泛型类型的情况下编译的?C# 是否在运行时推断类型?

0 投票
6 回答
51985 浏览

java - Java泛型方法继承和覆盖规则

我有一个具有泛型方法的抽象类,我想通过用特定类型替换泛型参数来覆盖泛型方法。所以在伪代码中我有以下内容:

但由于某种原因,我不允许这样做?我是在犯某种语法错误还是不允许这种继承和覆盖?具体来说,我收到一个错误,@Override因为 Eclipse IDE 不断提醒我实施getAndParse.

这就是我希望上面的代码如何工作。在我的代码的其他地方,有一个方法需要实现的对象实例,GetAndParse这特别意味着它们有一个getAndParse我可以使用的方法。当我调用getAndParse那个实例时,编译器会检查我是否T以正确的方式使用了特定的实例,所以特别是T应该扩展AnotherClass并且应该是SpecificClass.

0 投票
1 回答
346 浏览

c# - 填充列表的通用方法无法创建 T()

我有下面的通用方法,如果它有效,它将达到它的目的!但是该items.Add(new T(mo));部分不会编译,因为我使用的是构造函数。任何人都可以帮忙吗?

0 投票
2 回答
268 浏览

java - Java中的泛型方法

我不知道如何给它起一个更好的标题,因为我真的不知道这种模式在 Java 中叫什么。

现在我有一个带有这个签名的方法:

你这样称呼它:

对类型的约束确保MyDirectory必须从Directory.

我真正想做的是避免强制转换并减少所需的代码量。在 C# 中,你可以说:

有没有办法在Java中做到这一点或类似的东西?自 1.4 版以来,我没有编写任何 Java 代码!

0 投票
5 回答
4484 浏览

c# - 运算符“&”不能应用于“T”和“T”类型的操作数

我的应用程序定义了几个enum包含该[Flags]属性的 s。

我想编写一个小的实用程序方法来检查是否为其中任何一个设置了标志enum,我想出了以下内容。

但这给了我错误“运算符'&'不能应用于'T'和'T'类型的操作数”。

这可以工作吗?

0 投票
4 回答
484 浏览

java - How to avoid "Type mismatch" in static generic factory method?

Either I'm too stupid to use google, or nobody else encountered this problem so far.

I'm trying to compile the following code:

Howerer, in the line "return _this;" I get the error "Type mismatch: cannot convert from MyClass to T" Why is this? T extends MyClass, so where is the problem? If I change the line to "return (T)_this;", i just get a warning about the unchecked cast, but I don't like warnings ;-) Is there a way to achieve what i want without an error or warning?

0 投票
3 回答
600 浏览

c# - 间接引用声明具有类型限制的通用扩展方法的程序集时出现奇怪的编译错误

好吧,我很清楚我的问题的标题太复杂了。我只是试图使其尽可能具体。所以,我会尝试更好地解释这个问题。

问题上下文

假设我们在一个解决方案中有三个 .NET 项目。主项目是一个简单的控制台应用程序ApplicationAssembly。该项目引用了另一个托管程序集库DirectlyReferencedLibrary。同时 DirectlyReferencedLibrary 指的是IndirectlyUsedLibrary

因此,项目用法如下所示: ApplicationAssembly --> DirectlyReferencedLibrary --> IndirectlyUsedLibrary

请注意,ApplicationAssembly 不直接使用任何声明为 IndirectlyUsedLibrary 的类型。我们还假设在这些程序集中声明的所有类型都驻留在同一个命名空间中。

该解决方案可以编译并正常工作。

奇怪的问题

当我同时满足以下条件时会出现问题:

  1. ApplicationAssembly项目使用了LINQ 表达式。例如,如果在任何可枚举类型的对象上调用 Select()。
  2. DirectlyReferencedLibrary声明了一个具有类型限制的通用扩展方法的类。类型限制表示泛型类型必须是IndirectlyUsedLibrary类的后代。

这是此类的示例。

当我尝试编译这个项目时,我收到以下错误:

错误类型“Test.ProblemType”在未引用的程序集中定义。您必须添加对程序集“IndirectlyUsedLibrary,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”的引用。C:\Projects\Test\ApplicationAssembly\Program.cs 22 13 ApplicationAssembly

问题

谁能帮我理解为什么会这样?

附言

我为调查做了一个微小的解决方案。如果您愿意帮助我,您将可以在此处获取存档的解决方案

聚苯乙烯

对不起我的英语不好。

UPD1

另一个奇怪的事情是 LINQ 方法的不同调用可能会也可能不会产生编译时错误:

0 投票
3 回答
5543 浏览

c# - 通用方法和可选参数

是否可以编写类似的结构?
我想以某种方式为 T 类型的参数设置默认值。

此外,我发现以下链接: Generic type conversion FROM string
I think, this code must work

0 投票
3 回答
886 浏览

c# - 返回一个通用列表

从文件加载值后,我试图返回一个通用列表。但是,经过大量摆弄类型操作后,我仍然无法同意我的看法。代码如下;我的问题是:

  1. 我是否需要像下面开始那样识别每种键类型,还是有更快的方法?我看到 'where T: ...' 在这里可能是相关的,但如果可能的话,我想允许 DateTime、int、string、double 等,我看不出如何用 'where' 来做这些。
  2. 为什么我不能将我的 DateTime 项目添加到日期时间的列表中?
  3. 当我尝试获取类型(listType)时,这似乎超出了范围。即使我在上面使用它的行中声明了类型,它也表示不存在这样的对象。

非常感谢您的想法

0 投票
3 回答
173 浏览

c# - 泛型方法如何在 C# 中实例化?

假设我有一个通用方法:

是泛型方法this.Fun<Feature>this.Fun<Category>不同实例化吗?

一般来说,泛型方法是如何被实例化的?不同的泛型参数会产生不同的方法,还是相同的方法以及运行时使用的不同元数据?

请用语言规范中的一些引用来支持您的回答。

另外,假设我做了这些:

然后后来,

lineX撤消我所做的事情吗line1?或者它也取决于其他东西?