[ SteleStudent @ 02.05.2007. 11:09 ] @
koja je uopste razlika izmedju nadjacavanja sa NEW i OVERRIDE???
[ Prokleta_Nedelja @ 02.05.2007. 11:45 ] @
Da nisi mislio na Overridable?
[ SteleStudent @ 02.05.2007. 12:22 ] @
dakle tek sam poceo sa C#...ono sto je meni jasno je da kada u nadklasi imam metodu koja je public i virtual, u podklasi napravim istu tu metodu sa modifikatorom new ja sam je preklopio i poziva se odgovarajuca metoda iz podklase...kada isto to uradim sa override umesto new, ISTO SE DESAVA ...te mi nije jasno koja je razlika...a siguran sam da postoji i da je verovatno NE mala...
[ Function @ 02.05.2007. 12:45 ] @
Da ne prevodim, vjerujem da znaš Engl. za ovo
http://blogs.msdn.com/csharpfaq/archive/2004/03/12/88453.aspx

Pozdrav.
[ Glogov_Kolac @ 04.05.2007. 21:09 ] @
Sa new se vrsi tzv skrivanje ako se radi o istom imenu imena(metode).NE treba to mnogo da te opterecuje jer new (po meni) nema nikakvu funkcionalnu korist.
[ bunker @ 05.05.2007. 12:37 ] @
Citat:
Glogov_Kolac: Sa new se vrsi tzv skrivanje ako se radi o istom imenu imena(metode).NE treba to mnogo da te opterecuje jer new (po meni) nema nikakvu funkcionalnu korist.


Sa ovim izlaganjem se nikako ne bih slozio. Ako nasledim TextBox i hoccu se u slucaju postavljanja teksta u tu kontrolu, property Text desi neka validacija, u svoju nasledjenu kontrolu staviccu "public new string Text".
Ovo je iz prostog razloga sto neccu da uvotim svojstvo (property) Text2.

Primer:

Code:

public class MyTextBox : TextBox
{

  public new string Text
  {
    get 
    {
      if (base.Text == "") return null;
      else return null;
    }
    set { ... } 
  }
}

Ovde sam jednostavno hteo da mi vraccena vrednost bude null ako je u textboxu prazan string, ali moguccnosti su neogranicene.

Nadam se da sam bio jasan.
[ negyxo @ 05.05.2007. 14:14 ] @
@bunker

Sta ti ovo znaci, ne mogu nikako da provalim
Citat:

Ovo je iz prostog razloga sto neccu da uvotim svojstvo (property) Text2.


Inace Textbox.Text property je deklarisan kao virtual, tako da i bez new mozes da uradis to sto zelis, problem je samo sta zelis da uradis

@Glogov_Kolac
Citat:
Glogov_Kolac: Sa new se vrsi tzv skrivanje ako se radi o istom imenu imena(metode).NE treba to mnogo da te opterecuje jer new (po meni) nema nikakvu funkcionalnu korist.


Ti nekako... reako pa porekao. Pa funkcialnost je upravo ta, da sakrije metodu u nasledjenoj klasi, tako da mozes da pozivas komotno base metodu a da je nisi pregazio.
[ bjevta @ 06.05.2007. 07:17 ] @
evo, prekjuče mi je zatrebo new. Koristim neki source gde je baja lepo zamislio da će to uvek tako radi:

public bool IsDirty { get ... set ... }

šta da radim kad mi treba da malo našminkam getter? U izvedenoj klasi:

public new bool IsDirty { get { return base.IsDirty || nekimojizraz; } }
-----------------
new je krpež koji treba da ti pomogne da postojeću metodu/property prepraviš iako nije dizajnirana da bude polimorfna. treba ga izbegavati ali ne po cenu da komplikuješ svoj kod - kad mora, samo new!
[ negyxo @ 07.05.2007. 07:32 ] @
@bunker
Ne moras do odgovoris, posle sam skontao. Nije mi bila jasna recenica zbog one reci 'uvotim' :)

@bjevta
new ima svoju primenu, i ne treba to dozivljavati tako 'ovo je krpzez' koristi se tamo gde treba i to je to. Nego pitanje koje se namce, je u kom kontekstu se koristi new i zasto? A to treba analizirati od slucaja do slucaja, mada ajde moze da se kaze neko generalno shvatanje. Inace ne mora se ni koristiti new, moze lepo da se napise samo nova deklaracije, jedino ce se kompajler zaliti ali i to moze da se iskljuci sa predprocesorskom direktivom:
Code:

#pragma warning disable 0108
#pragma warning disable 0114
// ne znam koji broj je za sta, treba proveriti u helpu :)
[ mmix @ 07.05.2007. 14:20 ] @
Budite veoma veoma obazrivi sa new. Vise puta sam morao da krpim to "gazenje" metoda.

new je veliki neprijatelj polimorfizma i mozete i smete da ga koristite ako i samo ako ste 100% sigurni da NIKO NIKAD nece koristiti instancu vase klase preko baznog tipa.
Tj:

Code:

public class MyTextBox : TextBox
{

  public new string Text
  {
    get 
    {
      if (base.Text == "") return null;
      else return null;
    }
    set { ... } 
  }
}


// negde dalje

TextBox xx = new MyTextBox();
string tt = xx.Text;   // bice pozvan bazni getText i vratice se "", ne null