Вопрос по asp.net, static, c#, non-static – Доступ к члену класса из статического метода

3

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

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

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

Тебе нужноSummary быть постоянным? Вы можете пометить этоpublic const string Summary и вы можете получить к нему доступ с обоих. Justin Skiles
Статические члены принадлежатType Нестатические члены принадлежатinstance of that type. asawyer

Ваш Ответ

3   ответа
1

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

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

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

8

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

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

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

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

Похожие вопросы