【发布时间】:2012-05-25 13:08:52
【问题描述】:
我有以下接口,它使用回调返回类型 T 的泛型参数...
public interface IDoWork<T>
{
T DoWork();
}
但是我也有下面的接口,但是它不会调用回调,因为它返回 void。
public interface IDoWork
{
void DoWork();
}
我可以结合这两个接口并使用运行时逻辑来确定差异吗?我该怎么做?
【问题讨论】:
-
可惜你不在 Java 领域,因为你完全有能力做类似
IDoWork<Void> ...的事情。我有点惊讶 C# 没有提供这样的东西。 -
@ChrisCashwell,这是因为 .NET 泛型内置于 CLR 中,而在 Java 中它只是一个编译器技巧(JVM 在运行时对泛型一无所知)。虽然这通常是 .NET 泛型的一个优势,但这也意味着规则更加严格......
-
@ThomasLevesque 我在哪里可以详细了解 .NET 的方法与 Java 相比有何优势?
-
@makerofthings7,见this question
-
谢谢@ThomasLevesque; TL;DR 版本:C# 泛型优于 Java 的好处是性能改进、深度类型安全验证和反射
标签: c# api generics api-design nul