静的メソッドとインスタンスメソッドを同じC#またはC++クラスに含めることはできますか?
「はい」の場合は、なぜそうでない場合は、両方を使用するのは何ですか?同じC#またはC++クラスに静的メソッドとインスタンスメソッドを使用できますか?
答えて
はい、もちろん可能です!
静的メソッドは暗黙的なthis
ポインターを渡さず、そのクラス/タイプの特定のインスタンス(メンバーの変更など)を操作する必要がない場合に常に使用されます。
の場合は特定のインスタンスを変更する必要があります。インスタンスメソッドを使用する必要があります。
これらの2つのタイプのメソッドを同じクラスで一緒に宣言することはできません。 C#を使用している場合は、.NET Frameworkで定義されているいくつかのクラスをチェックしてください。それらの多くは、静的メソッドとインスタンスメソッドの両方を持っています。それは、これらが効果的にどのように使用されるかについてのあなたのアイデアを提供します。
C++では、C#のように静的なクラス(すべての静的メソッドを持つクラス)を作成する必要はありません。より良いアプローチは、関数を空き関数として名前空間に入れることです。すべてが「対象」である必要はありません。
はいできます。
多くの用途があります。静的メソッドは、通常、クラスのインスタンスに適用できるライブラリツールです。
インスタンスメソッドは、特定のインスタンスごとに呼び出すメソッドです。
ありがとうございます。今は宿題ではありませんが、はい、私はこのことを学んでいます。 – steelponey
はい、ここではフレームワーク自体からpracticle例です:
namespace System
{
public struct Int32 //...
{
public const int MaxValue = 2147483647;
//...
public TypeCode GetTypeCode();
public static int Parse(string s);
//...
}
}
メンバーのみが静的に保持されます場合は、たとえば、均等に同じ起源のクラスのそれぞれとすべてのオブジェクトかかわらず、共有することが必要とされています静的メソッド(静的メソッドでもクラスの静的な値を返す必要があります)がある場合、静的メンバーはそのクラスのオブジェクトを作成する前に開始されます。
あなたはオブジェクト指向のやり方で思考を始めるならば、何千もの方法と千の理由があるのをなぜ覚えているのですか?
- 1. pythonクラスのインスタンスメソッドと静的メソッド
- 2. dbHelperの静的メソッドまたはインスタンスメソッド?
- 3. 仮想静的メソッドを使用できますか? (C++)
- 4. 静的メソッドまたはインスタンスメソッドを.NETで拡張しますか?
- 5. クラスメソッドと静的メソッドで同じデコレータを使用できますか?
- 6. パブリック静的クラスのC#テストプライベート静的メソッド
- 7. 同じPythonクラスのメソッド、クラスメソッド、静的メソッド
- 8. Modelクラス(MVC)は静的メソッドまたはインスタンスメソッドを使用する必要がありますか?
- 9. 静的メソッドとインスタンスメソッド、マルチスレッド、パフォーマンス
- 10. 静的メソッドと非静的メソッドを同じクラスに持つのは間違っていますか?
- 11. Javascript - 静的メソッドとインスタンスメソッドの同じ名前の悪い練習ですか?
- 12. 何が良いですか?静的メソッドまたはインスタンスメソッド
- 13. インスタンスメソッドと静的メソッド(refパラメータ付き)
- 14. 親クラスとインプリメンテーションインタフェースに同じ名前の静的メソッドと非静的メソッド
- 15. 共用の静的メソッドとインスタンスメソッド
- 16. Javaの静的{...}と同じC#は何ですか? Javaでは
- 17. C#で同じ名前の2つの静的クラスを使用する
- 18. Powermockitoを使用して同じクラスの静的メソッドと非静的メソッドをモックする方法
- 19. 静的クラスC#ASP.NET Webフォームで静的メソッドを呼び出す
- 20. 静的メソッドを使用する静的メソッドまたは非静的メソッド
- 21. 静的でないクラスのスレッドのC#静的メソッドは安全ですか?
- 22. C#静的クラスなぜ使用しますか?
- 23. 静的クラス(または静的メソッド)をC#コード(Pythonではなく)を使用してIronPython(またはDLR)にインポートする方法は?
- 24. C# - クラス名、インスタンスメソッドの構文とvs静的構文で修飾せずに呼び出す拡張メソッド
- 25. 静的メソッドを使用したStringクラス
- 26. 静的メソッドを使用したFlashDevelopクラス
- 27. C#の静的メソッドとコンソール
- 28. 既存のインスタンスメソッドまたは静的メソッドのアンドロイド2インスタント実行
- 29. C#.NETで静的なクラスとメソッドをテストする
- 30. ネストされた静的クラスでは拡張メソッドは使用できません。
この宿題はありますか? – ibid
*具体的な例をコードで記述できますか?そして、あなたの質問を1つの言語に限定してください。 C#とC++は全く異なっています。 –
フレームワークのStringクラスを見ると、両方の質問に対する答えが得られます。 – Jonathan