2011-12-20 3 views
-4

静的メソッドとインスタンスメソッドを同じC#またはC++クラスに含めることはできますか?
「はい」の場合は、なぜそうでない場合は、両方を使用するのは何ですか?同じC#またはC++クラスに静的メソッドとインスタンスメソッドを使用できますか?

+2

この宿題はありますか? – ibid

+1

*具体的な例をコードで記述できますか?そして、あなたの質問を1つの言語に限定してください。 C#とC++は全く異なっています。 –

+1

フレームワークのStringクラスを見ると、両方の質問に対する答えが得られます。 – Jonathan

答えて

3

はい、もちろん可能です!

静的メソッドは暗黙的なthisポインターを渡さず、そのクラス/タイプの特定のインスタンス(メンバーの変更など)を操作する必要がない場合に常に使用されます。

の場合は特定のインスタンスを変更する必要があります。インスタンスメソッドを使用する必要があります。

これらの2つのタイプのメソッドを同じクラスで一緒に宣言することはできません。 C#を使用している場合は、.NET Frameworkで定義されているいくつかのクラスをチェックしてください。それらの多くは、静的メソッドとインスタンスメソッドの両方を持っています。それは、これらが効果的にどのように使用されるかについてのあなたのアイデアを提供します。

C++では、C#のように静的なクラス(すべての静的メソッドを持つクラス)を作成する必要はありません。より良いアプローチは、関数を空き関数として名前空間に入れることです。すべてが「対象」である必要はありません。

1

はいできます。

多くの用途があります。静的メソッドは、通常、クラスのインスタンスに適用できるライブラリツールです。

インスタンスメソッドは、特定のインスタンスごとに呼び出すメソッドです。

+0

ありがとうございます。今は宿題ではありませんが、はい、私はこのことを学んでいます。 – steelponey

1

はい、ここではフレームワーク自体からpracticle例です:

namespace System 
{ 
    public struct Int32 //... 
    { 
     public const int MaxValue = 2147483647; 

     //... 

     public TypeCode GetTypeCode(); 
     public static int Parse(string s); 

     //... 
    } 
} 
1

メンバーのみが静的に保持されます場合は、たとえば、均等に同じ起源のクラスのそれぞれとすべてのオブジェクトかかわらず、共有することが必要とされています静的メソッド(静的メソッドでもクラスの静的な値を返す必要があります)がある場合、静的メンバーはそのクラスのオブジェクトを作成する前に開始されます。

あなたはオブジェクト指向のやり方で思考を始めるならば、何千もの方法と千の理由があるのをなぜ覚えているのですか?

関連する問題