2011-07-27 25 views
3

私はC#を初めて使用しています。 main()メソッドを "クラス"内に配置する目的は何ですか? この「いわゆる」クラスのオブジェクトは作成されません。なぜ彼らはクラスとメソッドとして全体のプログラムを見ているのかわかりません。 main()関数がメソッドと呼ばれるのはなぜですか?明らかにそれはクラスにありますが、私はいつもそれを関数と呼んでいます。このように:C#では、このクラス内でメソッドを囲む目的は何ですか?

using System; 
public class MyApp // What is the purpose of this class? 
{ 
    public static void main() // Why is this called a method & not a function when no objects use it? 
    { 
    //Statements Here 
    } 
} 
+1

技術的には、関数が値を返すものです。この意味は手続き型プログラミングの文脈で少し緩んだ。関数が実際に何の価値も生み出さずに副作用を引き起こす可能性がある(これは間違いなくこの用語の乱用である)。 「メソッド」という用語は意味が中立であるため、関数ではなくメソッドまたはプロシージャ(戻り値のないメソッド)を呼び出します。 –

答えて

10

C#では、純粋な(裸の)関数はありません。すべての実行可能コードはクラスのコンテキスト内に存在します。クラスの実行可能なメンバ(関数)はメソッドと呼ばれます。それは、物事が言語で定義されている方法です。

これは現在、オブジェクト指向プログラミングではかなり標準的です。あなたはそれについてもっと研究したいかもしれません。

+0

私はObjective-Cで少し見ましたが、クラス内にmain()メソッドを置くという考えは出ていません。私はこのクラスのポイントが何であるかちょっと混乱しています。このクラスのインスタンスは作成されません。インスタンスを一切持たずにそのクラスの目的を説明できますか? – codeblooded

+2

興味深いのは、これは.NETの制限ではないということです。 CLRを使用すると、アセンブリモジュールのコンテキスト内で「グローバルメソッド」を定義できます。私はこれが主にVBとの互換性のためだと推測しています。 C#では、メソッド定義のこの追加のスコープを削除することを選択しました。 C#から 'global ::'を使ってこのスコープにアクセスすることはできます。 –

+0

@ispeakcode、静的クラスは、 'Math'静的クラスなど、特定の名前付きスコープ内の関連するメソッドの概念的なグループ分けを意図しています。代わりに、名前空間のスコープで '静的'な関数を持たせることもできますが、これは名前空間を '使用する 'ようにすぐに何百ものユーティリティ関数でアクティブなスコープの汚染につながります。 –

0

uはまた、uは、彼らはサブルーチンから関数を区別VBで、このクラス

0

をテストするために独自のvoid main()で複数の離れたクラスを持つことができ、実行 ための1つのmain()の方法を持っている必要があります。 C#では、void以外の戻り値を持つ場合、このメソッドはvbのような関数と考えることができます。単語メソッドがないので、mainという名前はクラスが内部でクラス構造を持ち、正しく構築されていればメソッドとみなされます。メソッドの構造体を開始するのは{戻り値の型としてvoidを持つmainメソッドでのみvoidを返すことができます。あるいは、戻り値を入力すれば、すぐにメインメソッドの構造の最後に行きます} "クラス" 内のmain()メソッドを配置する目的は何

2

C#がオブジェクト指向言語です。つまり、すべてのメソッドはクラスに属している必要があります。

この「いわゆる」クラスのオブジェクトは作成されません。

この完全に有効なコードを検討してください。

Dogクラスには、いくつかの機能、重み、名前などがあります。そこには、Dogクラスのいくつかのインスタンスが作成され使用される主要なメソッドも含まれています。

主な方法は、アプリケーションが読み込まれる特別な方法です。

public class Dog 
{ 
    int weight; 
    int name; 

    public static void main (string[] args) 
    { 
     Dog myDog = new Dog(); 
     myDog.weight = 15; 
     myDog.name = "Fido"; 

     Console.WriteLine("MyDog Name: {0} Weight: {1}", myDog.weight, myDog.name); 

     Dog bigDog = new Dog(); 
     bigDog.weight = 100; 
     bigDog.name = "Beethoven"; 

     Console.WriteLine("BigDog Name: {0} Weight: {1}", bigDog.weight, bigDog.name); 
    } 
} 

はまた、なぜmain()関数はメソッドと呼ばれていますか?

関数/メソッド同じ事...

関連する問題