5

これについて話しているスレッドがたくさんあることは知っていますが、これまでのところ、自分の状況に直接役立つスレッドは見つかりませんでした。静的メソッドと非静的メソッドの両方からアクセスする必要があるクラスのメンバーがいます。しかし、メンバーが非静的である場合、静的メソッドからそれらに到達できないようです。

public class SomeCoolClass
{
    public string Summary = "I'm telling you";

    public void DoSomeMethod()
    {
        string myInterval = Summary + " this is what happened!";
    }

    public static void DoSomeOtherMethod()
    {
        string myInterval = Summary + " it didn't happen!";
    }
}

public class MyMainClass
{
    SomeCoolClass myCool = new SomeCoolClass();
    myCool.DoSomeMethod();

    SomeCoolClass.DoSomeOtherMethod();
}

どちらのタイプの方法からも要約を取得することをどのように提案しますか?

4

3 に答える 3

9

どちらのタイプの方法からも要約を取得することをどのように提案しますか?

myCool-に渡す必要があります。DoSomeOtherMethodその場合は、最初にインスタンスメソッドにする必要があります。

基本的に、そのタイプのインスタンスの状態が必要な場合、なぜそれを静的にするのですか?

于 2012-08-10T17:48:30.507 に答える
7

静的メソッドからインスタンスメンバーにアクセスすることはできません。静的メソッドの要点は、それらがクラスインスタンスに関連していないということです。

于 2012-08-10T17:48:04.640 に答える
2

あなたは単にそのようにそれをすることはできません。静的メソッドは非静的フィールドにアクセスできません。

Summary静的にすることができます

public class SomeCoolClass
{
    public static string Summary = "I'm telling you";

    public void DoSomeMethod()
    {
        string myInterval = SomeCoolClass.Summary + " this is what happened!";
    }

    public static void DoSomeOtherMethod()
    {
        string myInterval = SomeCoolClass.Summary + " it didn't happen!";
    }
}

または、SomeCoolClassのインスタンスをDoSomeOtherMethodに渡して、渡したSummaryばかりのインスタンスから呼び出すことができます。

public class SomeCoolClass
{
    public string Summary = "I'm telling you";

    public void DoSomeMethod()
    {
        string myInterval = this.Summary + " this is what happened!";
    }

    public static void DoSomeOtherMethod(SomeCoolClass instance)
    {
        string myInterval = instance.Summary + " it didn't happen!";
    }
}

とにかく、私はあなたが達成しようとしている目標を本当に見ることができません。

于 2012-08-10T17:59:12.053 に答える