3

オブジェクトを持つ非静的クラスから静的メソッドにアクセスします。C# ではできません。JAVAによって行われる場所。使い方?

Java の例

/**
* Access static member of the class through object.
*/
import java.io.*;

class StaticMemberClass {
    // Declare a static method.
    public static void staticDisplay() {
        System.out.println("This is static method.");
    }
    // Declare a non static method.
    public void nonStaticDisplay() {
        System.out.println("This is non static method.");
    }
}

class StaticAccessByObject {

    public static void main(String[] args) throws IOException {
        // call a static member only by class name.
        StaticMemberClass.staticDisplay();
        // Create object of StaticMemberClass class.
        StaticMemberClass obj = new StaticMemberClass();
        // call a static member only by object.
        obj.staticDisplay();
        // accessing non static method through object.
        obj.nonStaticDisplay();
    }
}

プログラムの出力:

This is static method.
This is static method.
This is non static method.

C#でこれを行うには? 前もって感謝します..

4

3 に答える 3

4

C#は、を介して静的メソッドを参照することを禁止しています。許容されるinstance.Methodのはのみです。Type.Method静的メソッドを呼び出すには、インスタンスではなく型を調べる必要があります。
あなたの場合、これはそれが機能することを意味しますStaticMemberClass.staticDisplay()が、obj.staticDisplay()機能しません。


メソッドがフォームのメンバーアクセス(§7.6.4)で参照されるE.M場合M、が静的メソッドである場合は、を含むE型を示す必要があり、がインスタンスメソッドであるM場合は、を含む型のインスタンスを示す必要があります。MEM

(C#言語仕様バージョン4.0-10.6.2静的メソッドとインスタンスメソッド)

静的メンバーがフォームのメンバーアクセス(§7.6.4)でM参照される場合、は、を含むタイプを示す必要があります。インスタンスを示すためのコンパイル時エラーです。E.MEME

(C#言語仕様バージョン4.0-10.3.7静的およびインスタンスメンバー)

于 2012-09-15T09:30:00.277 に答える
3

できません。あなたの場合、実際のクラスを使用する必要があります

StaticMemberClass.staticDisplay();
于 2012-09-15T09:27:54.597 に答える
0

静的メンバーへの呼び出しをラップするインスタンス メンバーを作成できます。または、静的メンバーをインスタンス メンバーにします。

于 2012-09-15T10:37:10.473 に答える