Доступ к члену класса из статического метода

Я знаю, что об этом говорят многие темы, но до сих пор я не нашел ни одной, которая бы непосредственно помогала моей ситуации. У меня есть члены класса, к которым мне нужен доступ как из статических, так и из нестатических методов. Но если члены не являются статичными, я не могу получить к ним статические методы.

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();
}

Как бы вы посоветовали мне получить сводку от любого типа метода?

 Justin Skiles10 авг. 2012 г., 19:48
Тебе нужноSummary быть постоянным? Вы можете пометить этоpublic const string Summary и вы можете получить к нему доступ с обоих.
 asawyer10 авг. 2012 г., 19:48
Статические члены принадлежатType Нестатические члены принадлежатinstance of that type.

Ответы на вопрос(3)

огут получить доступ к нестатическим полям.

Вы можете сделать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!";
    }
}

В любом случае, я не вижу цели, которую вы пытаетесь достичь.

Решение Вопроса

Вам нужно будет пройтиmyCool вDoSomeOtherMethod - в этом случае вы должны сделать это методом экземпляра для начала.

По сути, если ему нужно состояние экземпляра типа, зачем вам делать его статичным?

 Jeremy10 авг. 2012 г., 20:11
Спасибо, ребята, за ваш конструктивный совет. После того, как я задал вопрос, я понял, что отправился на ланч, что это избавит меня от хлопот, если я сделаю DoSomeOtherMethod методом экземпляра и покончу с ним.

а. Весь смысл статических методов в том, что они не связаны с экземпляром класса.

Ваш ответ на вопрос