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

您如何建议我从任何一种方法中获取摘要?

你需要传递myCoolDoSomeOtherMethod- 在这种情况下,您应该将其作为实例方法开始。

从根本上说,如果它需要该类型实例的状态,为什么要将它设为静态?

于 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 回答