-
1. Data: 2012-09-26 12:21:20
Temat: [VB .Net] Dlaczego to działa
Od: Krzysiek <k...@p...spam>
Witam,
przejąłem właśnie kilka różnych projektów (w większości niewielkich) po
koledze który odszedł z firmy.
Jak się okazuje miał on wiele dziwnych nawyków programistycznych, (część
wynikających chyba z niechlujstwa, część z niedouczenia), ale czasami po
prostu nie rozumiem dlaczego działa coś co, jak mi się wydaje, działać
nie powinno.
Przykład 1:
Mamy dwie formy: Form1 (startowa) i Form2.
W kodzie Form1 następują odwołania do Form2 - jej zmiennych, obiektów
(np. datagridview) i ich metod.
Nigdzie wcześniej nie ma użytego słowa new w odniesieniu do Form2,
odwołania następują po prostu przez nazwę klasy. Dzieje się to też
jeszcze przed użyciem show.
Czyli np.
Private Sub Form1_Load (...)
Form2.zmienna = 5;
Form2.DataGridView1.Rows.Clear()
Form2.Show()
Czy VB automatycznie używa konstruktora przy odwołaniu do formy, czy o
co w ogóle chodzi? :)
Przykład 2:
(inny program) Po użyciu metody Close dla formy Form2 następują
odwołania do jej zmiennych z formy Form1. A Form2 nie było pokazywane
przy użyciu showdialog tylko show.
Zdziwiony
Krzysiek
-
2. Data: 2012-09-26 12:59:55
Temat: Re: [VB .Net] Dlaczego to działa
Od: IDKrzych <n...@p...onet.pl>
> W kodzie Form1 następują odwołania do Form2 - jej zmiennych, obiektów
> (np. datagridview) i ich metod.
> Nigdzie wcześniej nie ma użytego słowa new w odniesieniu do Form2,
> odwołania następują po prostu przez nazwę klasy. Dzieje się to też
> jeszcze przed użyciem show.
>
> Czyli np.
>
> Private Sub Form1_Load (...)
> Form2.zmienna = 5;
> Form2.DataGridView1.Rows.Clear()
> Form2.Show()
>
> Czy VB automatycznie używa konstruktora przy odwołaniu do formy, czy o
> co w ogóle chodzi? :)
>
> Przykład 2:
> (inny program) Po użyciu metody Close dla formy Form2 następują
> odwołania do jej zmiennych z formy Form1. A Form2 nie było pokazywane
> przy użyciu showdialog tylko show.
W VB w przypadku form mamy automatyczne tworzenie domyślnych egzemplarzy
(w przypadku odwoływania się po nazwie samej formy)
Można niszczyć, usuwać z pamięci, a i tak pierwsze odwołanie się do
formy domyślną nazwą spowoduje utworzenie nowego egzemplarza obiektu.
Tylko, że to będzie już inny obiekt - najczęściej ma to duże znaczenie.
Dlatego nie wolno używać nazw form tylko deklarować je po bożemu :)
Pozdrawiam
--
IDKrzych
"Jakkolwiek będzie - będzie inaczej, aniżeli sobie wyobrażamy
- ponieważ między Dobrem a Złem znajdujemy się w życiu i w świecie
wielowymiarowym,
w którym dokumentnie pomieszane jest Przypadkowe z Nieuchronnym."
(S. Lem 1999)
-
3. Data: 2012-09-26 16:17:37
Temat: Re: [VB .Net] Dlaczego to działa
Od: Krzysiek <k...@p...spam>
W dniu 2012-09-26 12:59, IDKrzych pisze:
> W VB w przypadku form mamy automatyczne tworzenie domyślnych egzemplarzy
> (w przypadku odwoływania się po nazwie samej formy)
Ciekawe, strasznie to premiuje niechlujstwo w kodzie. Dzięki za wyjaśnienie.
-
4. Data: 2012-09-26 17:22:26
Temat: Re: [VB .Net] Dlaczego to działa
Od: "R.e.m.e.K" <g...@d...null>
Dnia Wed, 26 Sep 2012 16:17:37 +0200, Krzysiek napisał(a):
>> W VB w przypadku form mamy automatyczne tworzenie domyślnych egzemplarzy
>> (w przypadku odwoływania się po nazwie samej formy)
> Ciekawe, strasznie to premiuje niechlujstwo w kodzie. Dzięki za wyjaśnienie.
Czego oczekiwales od basica? :-)
--
pozdro
R.e.m.e.K