为啥c#中的main方法总是放在类中而不是c++中

Posted

技术标签:

【中文标题】为啥c#中的main方法总是放在类中而不是c++中【英文标题】:why main method in c# is always placed inside the class but not in c++为什么c#中的main方法总是放在类中而不是c++中 【发布时间】:2012-02-18 15:23:57 【问题描述】:

为什么我们在 C# 中总是将 main() 方法放在 class 中,而在 C++ 中它总是放在 class 之外。

【问题讨论】:

没有一个答案添加了任何历史背景......这么多编程语言中的大多数都有一个名为main的入口点,为什么main而不是start @parapurarajkumar start 也可以。但必须做出选择。一旦做出了选择,那么这个选择就会卡住。 @parapurarajkumar:事实上,它在 BCPL 中被称为 start,但在 B 中变成了 main(C 的前身,基于 BCPL),这可能是趋于简洁的总体趋势的一部分. 60 年代内存很贵。 【参考方案1】:

C++ 语言设计者追随 C,所以 main 函数是一个普通函数。

C# 语言设计者在设计语言时选择了所有方法都必须是类的一部分。

【讨论】:

【参考方案2】:

出于历史原因。 C++ 是从 C 演变而来的,C 具有全局 main() 函数。 C# 更年轻,并且是从零开始设计的。 C# 的设计特点之一是没有全局函数,因此main 函数必须属于一个类。

【讨论】:

我不认为这是历史性的。如果今天做出决定,我认为它仍然会成为一个独立的功能。与某些语言不同,C++ 完全包含全局函数。 @edA-qamort-ora-y:它历史的,但非历史推理确实具有适当的分量:)【参考方案3】:

因为在 .NET 中,您只能将方法放在类型中。你不能让它们在空旷的空间里飘来飘去。 C++ 继承了 C 的传统,C 不是 OOP 语言,因此您可以在任何地方定义函数。

【讨论】:

这不仅仅是传统;独立函数非常有用,并且 C++ 标准引入了许多超出从 C 继承的函数。【参考方案4】:

您不能将方法放在 C# 中的类/结构之外。每个方法都必须在类/结构中

【讨论】:

【参考方案5】:

这是一个约定。这符合Java(也遵循在类中有方法的语义)。

【讨论】:

我知道,但还有其他具体原因还是只是约定? @r_ohit - 这只是一个约定。 Java 的设计者认为让一切都更加面向对象是一个好主意。然后他们发明了静态函数来克服这个限制...... 这不是惯例 - 这是语言的要求。约定意味着还有其他可能性。 @BoPersson:“Java 的设计者 [...] 发明了静态函数”-> 在 Java 出现之前,OO 语言中就存在静态成员。例如,它们是 1991 年在 C++ 中引入的。 @adelphus - 另一种选择显然是设计语言。 :-)【参考方案6】:

C# 是完整的面向对象的语言,其中一切都被视为对象。因此,Main() 保留在类中。

【讨论】:

以上是关于为啥c#中的main方法总是放在类中而不是c++中的主要内容,如果未能解决你的问题,请参考以下文章

为啥在构建后源代码的更改并不总是反映在机器代码中而重建工作?

C、C++、Java、C# 中的 main()

为啥只保存在源中而不是卡片中的条带卡?

等于c#中的c++ extern

为啥将 Collections.emptySet() 与泛型一起使用在赋值中而不是作为方法参数?

Swig C++ to C#:如何从 C++ 包装类以使模板类中的方法在 C# 的派生类中可用?