Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 2 odgovora
  • 1.882 pregleda

Najnovija ↓

Kastovanje sa ternarnim operatorom? 19.01.2008. u 19:36 · pre 228 meseci #1
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
Re: Kastovanje sa ternarnim operatorom? 19.01.2008. u 22:06 · pre 228 meseci #2
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)
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: Kastovanje sa ternarnim operatorom? 19.01.2008. u 22:28 · pre 228 meseci #3
Super !

ovo je resilo problem

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

Pozdrav i hvala puno za pomoc !
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme