Zmienna imie nie ma przypisanej wartosci, tzn nie jest zainicjalizowana. Oznacza to, że w przeciwienstwie do zmiennej nazwisko nie jest typu String, tylko null. Nie mozesz wiec zrobic np. imie.ToUpperCase()
, bo rzuci ci bledem (metoda ToUpperCase() jest metoda klasy String). Za to mozesz to zrobic na zmiennej nazwisko, chociaz ma pusta wartosc, bo jest ona zainicjalizowana i ma typ String.
czyli jak definiowac zmienne w klasie ?
Powinienes deklarowac zmienne tak jak zmianna imie, a inicjalizowac je w konstruktorze klasy. Gdybys inicjalizowal zmienne tak jak zmienna nazwisko, oznaczaloby to ze kazdy obiekt klasy Uczen mialby to samo nazwisko. Jezeli nie czaisz o czym roznicy miedzy klasa i obiektem, to zlap dowolna ksiazke lub kurs i poczytaj ;)
edit: jednak C# dziala inaczej, wybacz ;)