Elementy statyczne – prośba o wyjaśnienie

0

Witam.Nurtuje mnie jedna rzecz.Zgodnie z definicja metody statyczne mogą posiadac i operowac tylko na statycznych składnikach.W momencie deklaracji zmiennej w statycznej metodzie np.Main() bez dodania słówka "static" nie pojawia się błąd kompilacji, tak samo przy deklaracji metod w ten sposob.Czy to oznacza ze sa niejawnie przeksztalcane na statyczne elementy ?

0

Zmienna zadeklarowana w metodzie, to zmienna lokalna, więc z definicji nie może być statyczna, no bo jak?

0
NeutrinoSpinZero napisał(a):

Zmienna zadeklarowana w metodzie, to zmienna lokalna, więc z definicji nie może być statyczna, no bo jak?

Czyli jak Metoda Main() może mieć elementy statyczne wbrew definicji metody statycznej ?

Oto przyklad:

static void Main(string[] args)
{
    int wiek = 20;
    void funkcja()
    {
        Console.WriteLine(wiek);
    }
    funkcja();
    Console.ReadKey();
}
0

Ale przecież nie operujesz tutaj na niestatycznych elementach, jedynie na lokalnych. Jeśli chodzi Ci o zmienną wiek, to zauważ, że jest w ciele metody, tj. jest zmienną lokalną. Nawet gdyby mogła być statyczna to nie miałoby to sensu, skoro możesz z niej korzystać tylko w ciele metody. Podobnie jest z Twoją metodą lokalną - funkcja().

edit:

Poniżej masz już kod, który nie przejdzie. Zmienną nie statyczną, której faktycznie nie mógłbyś wykorzystać, choćby dlatego, że metoda statyczna nie miałaby skąd wiedzieć do którego konkretnie obiektu się odwołujesz.

class Program
{
    int wiekNieStatyczny;
    public void setWiekNieStatyczny(int value)
    {
        wiekNieStatyczny = value;
    }
    static void Main(string[] args)
    {
        int wiek = 20;
        void funkcja() 
        {
            Console.WriteLine(wiek);
        }
        funkcja();
        Console.WriteLine(wiekNieStatyczny);
        Console.ReadKey();
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1