[ KizaBG @ 19.01.2008. 18:36 ] @
Tri pocetnicka pitanja

1. Kad se referencirate na kontrole na formi, da li koristite 'this' ili ne ? .. znaci, da li treba pisati : this.txtIme.text ili samo txtIme.text ?

2. Kastovanje .. kada koristiti : Convert.ToInt32(kandidatID), a kada (int)KandidatID ?

3. ajde pomoc za sledeci kod. Imam na formi nekoliko polja, sa kojih skupljam podatke i saljem dalje u proceduru.

Jedno od tih polja je kombo box :cbxGodine,koje nema Value member, tj. ne puni se iz koda, vec sam mu samo dodelio vredosti : 2005, 2006 ....

e sad, gde je problem, kada probam da posaljem ovako vrednosti dalje:

IList lista = manager.KandidatSearch(txtIme.Text.Trim(), txtPrezime.Text.Trim(),

cbxGodine.SelectedIndex == 0 ? null: cbxGodine.SelectedItem, <<<<<< ovo treba kastovati

cbxStrucnaSprema.SelectedIndex == 0 ? null : Convert.ToInt32(cbxStrucnaSprema.SelectedValue)

pukne mi kod, zato sto procedura iza ceka vrednosti u ovom formatu :

public IList Search(string ime, string prezime, int? godineZivota, int? strucnaSpremaID)

pokusao sam sa

cbxGodine.SelectedIndex == 0 ? null : (int)cbxGodine.SelectedItem

kao i :

cbxGodine.SelectedIndex == 0 ? null : Covert.ToInt32(cbxGodine.SelectedItem)

Medjutim, debugger mi podvuce plavom linijom ovu 'null' vrednost, i kaze da ne postoji implicitna konverzija izmedju null i int

pa me zanima, zasto ukljucuje null u konverziju, kada ja kastujem sa druge strane uslova ?

pozdrav i hvala za savet
[ mmix @ 19.01.2008. 21:06 ] @
1. this je implicitno i generalno ti nije neophodno, uglavnom ce ti trebati samo ako je element klase istog imena kao lokalni parametar u metodu da bi deklarisao ispravan scope:

Code:

class zzz 
{
    TextBox mojTextBox
    void metod (string mojTextBox)
    {
        this.mojTextBox.Text = mojTextBox;
    }
}


2. castovanje moze izmedju istorodnih tipova (npr int u byte) kad se gubi na preciznosti ili znaku (u suprotnom bi ti prosao i implicitni cast), kao i za pre-referenciranje objekta iz jedne klasu u drugu polimorfnu ili u podrzani interfejs, generalno kad ne postoji nikakva konverzija podataka vec se samo ti podaci posmatraju pod drugim tipom.
Konverzija ti treba u ostalim situacijama medju raznorodnim tipovima, a za koje postoji konverzioni "put" (npr int u float, ili string u int ako string sadrzi broj).

3. null je ukljucen u konverziju zato sto je inline case koji si napisao moze da vrati dva razlicita tipa, null i int, a ne postoji implicitni cast iz null u int, samo iz null u int?. Nijedan expression ne moze da bude dvoznacan tj da ima sansu da vrati dva razlicita tipa, a int i int? su razliciti tipovi. Probaj sledece:

Code:

cbxGodine.SelectedIndex == 0 ? null : (int?)Covert.ToInt32(cbxGodine.SelectedValue)
[ KizaBG @ 19.01.2008. 21:28 ] @
Super !

ovo je resilo problem

cbxGodine.SelectedIndex == 0 ? null : (int?)Covert.ToInt32(cbxGodine.SelectedValue

Pozdrav i hvala puno za pomoc !