为啥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++中的主要内容,如果未能解决你的问题,请参考以下文章
为啥在构建后源代码的更改并不总是反映在机器代码中而重建工作?