【发布时间】:2015-03-18 17:10:15
【问题描述】:
在 C# 中,方法 Main 必须是非泛型类型才能被选为入口点。这是为什么呢?
我对此有点困惑,因为这在 Java 中是可能的(函数 main() 可以在泛型类中)。
namespace ConsoleApplication
{
class Program<T> //incorrect
{
static void Main(string[] args)
{
}
}
}
【问题讨论】:
-
您为什么要这样做?逻辑是什么?你不能指望它知道
T应该是什么,也不能指望它“默认”为object或其他任何东西。 -
您认为操作系统会选择哪种类型来启动程序?
-
创建类时
T应该如何选择?它可以在 java 中工作,因为泛型类型在运行时被删除。 -
@CodeCaster 是的,我相信是的。但这并不重要。有些东西必须调用它,有些东西需要知道
T,但它没有。 -
据我了解,快速检查泛型类中的 Java 静态方法,Java 实际上并没有为每种类型创建不同的方法实现,而是静态方法对于一般类型是相同的.静态类型也不能用于 Java .Net (C#) 的静态方法中,它确实为泛型类型创建了特定的静态方法。 Type 也可以在方法内部使用(静态变量也有自己的每个类型的值)。然而,这确实意味着要使用静态方法,C# 必须知道它的类型(程序不知道),而 java 不需要知道。
标签: c# generics entry-point