通常、静的メソッド内で非静的メソッドを呼び出すことはできません。しかし、クラスインスタンスを使用すると、上記のことができます。クラスインスタンスはどのように私たちを可能にしますか?C#で静的メソッド内で静的メソッドを呼び出すのは、クラスインスタンス経由で可能です。
1
A
答えて
7
通常、静的メソッド内で非静的メソッドを呼び出すことはできません。
これは、過度の単純化です。デフォルトの "this"オブジェクトがないため、単一のメソッド名を指定することで、独自のクラスで非静的メソッドを呼び出すことはできません。あなたは、インスタンスメソッド内
SomeMethod(arg1, arg2);
を書くときの静的メソッドは「この」にはアクセスできませんので、C#が、
this.SomeMethod(arg1, arg2);
同じトリックは、静的メソッドの内部では動作しませんとして解釈します。
しかし、クラスインスタンスを使用する場合は、上記を実行できます。
これは、いったん別のオブジェクトを提供すると、「this」オブジェクトを探す必要がないからです。
8
質問は簡単です:このインスタンスでメソッドを呼び出そうとしていますか?どのようなローカルフィールドを仮定すべきか?
SomeInstanceMethod()
を呼び出すと暗黙的にthis.
がコンパイラによって追加されるので、これらの質問に対する答えは「現在のもの」です(技術的には、 arg0
の値)。だからSomeInstanceMethod()
と入力すると、コンパイラはthis.SomeInstanceMethod()
を意味するものとみなします。
静的メソッドの場合、暗黙のうちに追加することができるthis
はありません。インスタンスメソッドを呼び出すことはできますが、ターゲットインスタンスを明示的に指定する必要があります。 someObj.SomeInstanceMethod()
は問題なく動作します。インスタンスメソッドのsomeObj.SomeInstanceMethod()
を使用して、別のインスタンスのコンテキストでメソッドを呼び出すこともできます。
関連する問題
- 1. XAML経由で静的クラス内の静的メソッドを呼び出す
- 2. C#で静的メソッドを呼び出す
- 3. 静的クラスC#ASP.NET Webフォームで静的メソッドを呼び出す
- 4. インスタンスを介して静的メソッド内で静的メソッドを呼び出す方法
- 5. クラスで静的メソッドを呼び出す?
- 6. ヌルオブジェクトで静的メソッドを呼び出す
- 7. Javaで静的メソッドを呼び出す
- 8. コンストラクタで静的メソッドを呼び出す
- 9. WPFで非静的メソッドを呼び出す静的プロパティ
- 10. 静的メソッドで非静的GetType()を呼び出しますか?
- 11. C#静的メソッドを呼び出す
- 12. 静的メソッドから非静的メソッドを呼び出す静的メソッドで作成されたUSINGインスタンス
- 13. 静的メソッド呼び出し
- 14. 静的メソッド呼び出し
- 15. Workerスレッドから静的クラスインスタンスの静的メソッドを呼び出すことはできますか?
- 16. Powershellが静的メソッド内で式出力を呼び出す
- 17. C++で静的メンバーメソッドの内部で非静的メンバーメソッドを呼び出すことは可能ですか?
- 18. インターフェイスの静的メソッド内でデフォルトメソッドを呼び出す
- 19. Pythonのクラス内で静的メソッドを呼び出す
- 20. JFrame内のJPanelで非静的メソッドを呼び出す
- 21. なぜタイプパラメータで静的メソッドを呼び出すことが可能ですか?
- 22. 静的サブクラスの静的メソッドを呼び出す際のNullPointerException
- 23. オブジェクト - 静的メソッド内でオブジェクトインスタンスを呼び出す
- 24. 静的メソッドを呼び出すsymfony DI
- 25. 静的メソッドを呼び出すユニットテストコード
- 26. 静的メソッドから静的関数ポインタを呼び出す
- 27. PowerMock、静的メソッドをモックし、他のすべての静的メソッドで実際のメソッドを呼び出す
- 28. 静的メソッド内からクラスインスタンスを作成
- 29. Obj-C内から静的Swiftメソッドを呼び出す
- 30. 静的メソッド内で非静的メソッドにアクセスするAJAX