pole vs zmienna

0

Mam pytanie, bo w tym tutorialu:
Pola

jest napisane "w przeciwieństwie do zmiennych pole, jeżeli nie zostanie zainicjowane - nie ważne czy w miejscu zadeklarowania czy w konstruktorze klasy -po utworzeniu obiektu danej klasy automatycznie przyjmie swoją wartość domyślną,"

A zmienna co, niby nie przyjmie wartości domyślnej? Przecież przyjmie. To o co chodzi?

2
class MojaKlasa
{
    int pole;   
    public void ZrobCos()
     {
             int zmienna;  
             Console.WriteLine(pole);// tu będzie wartość domyślna
             Console.WriteLine(zmienna);//dostaniesz błąd Unassigned local variable na etapie kompiacji
     }
}
0

A no faktycznie jak spróbuję użyć zmiennej np. ją wyświetlając to dostaję błąd. Ciekawe natomiast, że jak postawię na niej breakpointa i po uruchomieniu programu na nią najeżdżam myszą to mi kompilator wskazuje, że ma niby wartość "0" - dziwne.

0
pytajnik2 napisał(a):

Ciekawe natomiast, że jak postawię na niej breakpointa i po uruchomieniu programu na nią najeżdżam myszą to mi kompilator wskazuje, że ma niby wartość "0" - dziwne.

Jak po uruchomieniu, jak to się w ogóle nie skompiluje?

0

No ale jak zakomentujesz kod z Console.WriteLine to się skompiluje i debugger niby wskaże, że wartość zmiennej = 0.

0

Jest równe zero a to zero znaczy że nic tam nie ma jeden wielki null zanim zmiennej użyjesz musisz nadać jej wartość czy to:

int i = 0; 
//lub
int i = new int();

a kompilator to przepuszcza po skomentowaniu ponieważ nie próbujesz takiej zmiennej użyć, kompilator tylko cie informuje poprzez warning że masz nie nadaną wartość zmiennej ale nie próbujesz jej użyć to nie widzi problemu.

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