2017-02-03 5 views
-3

インスタンスと静的メンバーの主な違いは実際の例で説明できますか?C#で静的メンバーを使用する理由

+2

私は良い本やオンラインチュートリアルを提案しています(たくさんのGoogleから利用可能です)。 – AlG

+0

"シングルトン"を参照してください。これは静的メンバーを使用する例です。 –

+0

静的メンバーはクラスに属しています。インスタンスメンバはインスタンスに属します。 (単なるシングルトンよりも静的メンバーのほうが有用なインスタンスがたくさんあります) –

答えて

-1

あなたは、静的なクラスに対してインスタンスを作成することはありません。型名を使って呼び出すだけです。

たとえば、

public static StaticClass { 
    public static void StaticMethod(){} 
} 

静的メソッドを呼び出すには、ちょうどこの、StaticClass.StaticMethod()を入力します。

クラスのオブジェクトを作成するときは、そのクラスのインスタンスの作成と呼ばれます。 インスタンスコンクリートクラスのみ作成できます)。例えば

public class ConcreteClass { 

public void RandomMethod(){} 

} 

RandomMethodを呼び出すには、オブジェクトを作成することによってConcreteClassインスタンスを作成する必要があります。

ConcreteClass abc = new ConcreteClass(); 
abc.RandomMethod(); 

はまた、静的クラスで、すべてのそれのメンバーが静的である必要がありますし、あなたがクラスをインスタンス化されないため、あなたは直接のメンバーを呼び出すことができるはず、ので、これは理にかなって、ことに注意してください。これは、上記の静的クラスの例では、メソッドも静的な理由です。

こちらがお役に立てば幸いです。

+1

決して一度も決して静的クラスについて言及することはありません。 – Servy

0

静的メンバーは、インスタンスメソッドが呼び出されたオブジェクトへのインスタンス参照である暗黙の「this」パラメータを使用せずに実行されます。

var number = Int32.TryParse("1234"); // Static member of Int32. 
//Is not called using an object, it doesnt not need the 'this' 
//because it doesn't change the data of the class. 

string stringy = "asdfasdf"; 

char [] characters = stringy.ToCharArray(); 
//requires the strings data so it needs the instance stringy. 

クラスデータが必要な場合は、インスタンスが必要です。そうでない場合は、メソッドを静的にして、オブジェクトなしでいつでも呼び出すことができます。

編集:最初はそれを静的メソッドとして読みます。静的データメンバーは完全に異なります。プログラムが実行されると、その型のデータオブジェクトが1つだけ割り当てられ、クラスのインスタンスではなくクラス名を介してアクセスできます。

public class Classy 
{ 
    public static int number= 4; 

    public static void func() { } 

    // Other non-static fields and properties... 
} 

//mainline.. 
// 
int n = Classy.number; 
Classy.func(); // etc.. 
関連する問題