2012-01-25 11 views
10

なぜmain()メソッドは常にC#のclassの中に入れますが、C++では常にclassの外側に配置されます。なぜc#のmainメソッドは常にクラスの中に置かれますが、C++にはありません

+20

異なる言語であると思われがちであると思われます。 –

+0

答えは歴史的なコンテキストを追加していません...多くのプログラミング言語の多くは、 'main'と呼ばれるエントリポイントを 'main'とし、' start'とは言わないエントリポイントを持っています。 –

+0

@parapurarajkumar 'start'もうまくいきました。しかし、選択がなされなければならなかった。選択がなされたら、その選択は固執した。 –

答えて

8

歴史的な理由から。 C++はC言語から進化しました。これはグローバルなmain()の機能を持っていました。 C#ははるかに若く、ゼロから設計されています。 C#の設計機能の1つはグローバル関数がないため、main関数はクラスに属していなければなりません。

+4

私はこれが歴史的だとは思わない。決定が今日行われるならば、私はまだそれが自立した機能になると思う。いくつかの言語とは異なり、C++はグローバル関数を完全に包含しています。 –

+0

@ edA-qamort-ora-y:それは歴史的ですが、非歴史的推論は確かに適切な量の重量を保持しています:) –

4

.NETでは、メソッドは内部型のみに配置できるためです。あなたはそれらを空の空間に浮かべることはできません。 C++にはOOP言語ではないCの遺産があるので、どこにでも関数を定義することができます。

+4

これは単なる遺産ではありません。 freestanding関数は非常に便利で、C++標準はCから継承されたものを超えて多くを紹介しています。 –

+0

ok私はあなたの意見を持っています。ありがとう –

3

C#でクラス/構造体の外部にメソッドを配置することはできません。各メソッドはクラス/構造体でなければなりません

11

C++言語の設計者はCの指導に従っていますので、main関数は単純な関数です。

C#言語設計者は、言語を設計する際に、すべてのメソッドをクラスの一部にする必要があることを選択しました。

0

これは規約です。これはJavaに似ています(クラス内にメソッドを持つという意味にも従います)。

+0

私は知っていますが、 –

+0

@r_ohit - これは単なる慣習です。 Javaのデザイナーは、すべてをより多くのものにすることが良い考えだと考えました。その後、彼らは限界を克服する静的関数を発明しました... –

+1

これは規約ではありません - それは言語の要件です。慣習は、他の可能性があることを意味します。 – adelphus

0

C#はすべてがオブジェクトとしてみなされる完全なオブジェクト指向言語です。したがって、Main()はクラスの内部に保持されます。