Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako ovo radi? [ASP.NET 2.0][C#]

[es] :: .NET :: ASP.NET :: Kako ovo radi? [ASP.NET 2.0][C#]

[ Pregleda: 4119 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Shevchenko
Nikola Vasiljevski

Član broj: 37756
Poruke: 218
*.dialup.neobee.net.

Sajt: www.vasiljevski.com


+2 Profil

icon Kako ovo radi? [ASP.NET 2.0][C#]26.12.2006. u 03:24 - pre 210 meseci
Code:

case "1":
                HiddenField n = (HiddenField)e.Item.FindControl("IDProizvoda");
case "2":
                n = (HiddenField) e.Item.FindControl("IDProizvoda");

Jel bi mogao neko da mi objasni u slucaju "2" kako .NET zakljucuje da je promenljiva n odgovarajuceg tipa?

Shoot for the moon. Even if you miss, you'll land among the stars.
Les Brown
 
Odgovor na temu

barneymdx
Slavisa Radicevic
Nova Pazova

Član broj: 27194
Poruke: 12
195.252.99.*



Profil

icon Re: Kako ovo radi? [ASP.NET 2.0][C#]26.12.2006. u 11:51 - pre 210 meseci
To ne radi...
 
Odgovor na temu

Shevchenko
Nikola Vasiljevski

Član broj: 37756
Poruke: 218
*.dialup.neobee.net.

Sajt: www.vasiljevski.com


+2 Profil

icon Re: Kako ovo radi? [ASP.NET 2.0][C#]26.12.2006. u 12:54 - pre 210 meseci
Citat:
barneymdx: To ne radi...

Veruj mi radi, a sto me jos vise zbunjuje je to da ako ga i u case "2" deklarisem kao "HiddenField n=..." Prijavljuje mi da je "n" dva puta deklarisan.
Shoot for the moon. Even if you miss, you'll land among the stars.
Les Brown
 
Odgovor na temu

VerbatimBOT
Aleksandar Dragosavac
Senior .NET Developer

Član broj: 84129
Poruke: 228
217.24.18.*



Profil

icon Re: Kako ovo radi? [ASP.NET 2.0][C#]26.12.2006. u 13:09 - pre 210 meseci
Tu nešto definitivno nije u redu!
Citat:
Shevchenko
Code:

case "2":
                n = (HiddenField) e.Item.FindControl("IDProizvoda");


Ja isto mislim da ovo ne može da radi (bar što se tiče C#, u VB-u može).
Citat:
Shevchenko: ako ga i u case "2" deklarisem kao "HiddenField n=..." Prijavljuje mi da je "n" dva puta deklarisan.

Ovo tek nije logično (bar meni)!
Winners never quit, quitters never win.
 
Odgovor na temu

spartak

Član broj: 5625
Poruke: 631
*.yubc.net.



+3 Profil

icon Re: Kako ovo radi? [ASP.NET 2.0][C#]26.12.2006. u 15:22 - pre 210 meseci
Nisam nikad ovako nesto probao. Ono sto mi pada na pamet je da proveris da li promenjivu n imas definisanu u scope u kojem se nalazi taj switch. U tom slucaju bi ovaj novi HiddenField n trebao da bude lokalni za taj case. Teoretski, kazem nisam probao.

U svakom slucaju nije dobra ideja da se to radi ovako, cak i da moze nema nikakvog razloga.
 
Odgovor na temu

Shevchenko
Nikola Vasiljevski

Član broj: 37756
Poruke: 218
*.dialup.neobee.net.

Sajt: www.vasiljevski.com


+2 Profil

icon Re: Kako ovo radi? [ASP.NET 2.0][C#]26.12.2006. u 17:17 - pre 210 meseci
I meni je ovo potpuno nelogina stvar, jer koliko se ja razumem, ako se ne izvrsi case"1" nece biti promenljive n, sto bi dovelo do greske pri izvrsavanju case"2"? Dok ako ovako nesto u if-u "normalno" vraca gresku da n ne postoji.

Citat:
spartak: Ono sto mi pada na pamet je da proveris da li promenjivu n imas definisanu u scope u kojem se nalazi taj switch.

Nemam, niti imam promenljivu na nivou klase koja je tog tipa. Imam samo metod
Code:

protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
    {
        switch (e.CommandName)
        {
            case "1":
                HiddenField n = (HiddenField)e.Item.FindControl("IDProizvoda");
                break;
            case "2":
                n = (HiddenField)e.Item.FindControl("IDProizvoda");
                break;
}
}

Cisto me interesuje kako je ovo moguce? Da li je ovo neki BUG, ili postoji logican razlog zasto je ovo moguce?
Shoot for the moon. Even if you miss, you'll land among the stars.
Les Brown
 
Odgovor na temu

Dejan Vesic
Dejan Vesic
CEO
IGT Ogranak Beograd
Beograd

Član broj: 84929
Poruke: 217
*.finsoft.co.yu.

Sajt: www.vesic.org


+1 Profil

icon Re: Kako ovo radi? [ASP.NET 2.0][C#]26.12.2006. u 17:32 - pre 210 meseci
Ovo je normalno ponašanje, po specifikaciji:

8.7.2 - http://msdn2.microsoft.com/en-us/library/aa664749(VS.71).aspx

"The statement-lists of a switch-block may contain declaration statements (Section 8.5). The scope of a local variable or constant declared in a switch block is the switch block."

Praktično, deklaracije važe unutar celog switch bloka a ne unutar case bloka.


 
Odgovor na temu

Shevchenko
Nikola Vasiljevski

Član broj: 37756
Poruke: 218
*.dialup.neobee.net.

Sajt: www.vasiljevski.com


+2 Profil

icon Re: Kako ovo radi? [ASP.NET 2.0][C#]26.12.2006. u 17:46 - pre 210 meseci
Upravo sam posmatrao tu stranicu, ali sam ocigledno preskocio taj deo :)
Hvala!
Shoot for the moon. Even if you miss, you'll land among the stars.
Les Brown
 
Odgovor na temu

deretic

Član broj: 121683
Poruke: 3
82.208.195.*



Profil

icon Re: Kako ovo radi? [ASP.NET 2.0][C#]15.01.2007. u 20:07 - pre 209 meseci
To mora da radi jer u slucaju 2 sa desne strane imaš eksplicitnu konverziju koja je sa desne strane u zagradi daje vrednost skrivenog polja, a promenjiva n je tako već deklarisana (HiddenField).Ovde se radi o prebacivanju jedne stavke iz kontrole u okviru nekog događaja pošto ima i e. predpostavljam , u promenjivu n tipa HiddenField. Po meni je to ispravna eksplicitna konverzija. [email protected]
 
Odgovor na temu

misanink

Član broj: 121333
Poruke: 1
*.static.beocity.net.



Profil

icon Re: Kako ovo radi? [ASP.NET 2.0][C#]18.01.2007. u 11:40 - pre 209 meseci
Deklaracije vaze na nivou switch bloka, ali ukoliko to ne nije ono sto nam treba
mozemo da stavimo blok u okviru svakog case-a
Code:
switch (e.CommandName)
        {
            case "1":
                 {
                HiddenField n = (HiddenField)e.Item.FindControl("IDProizvoda");
                break;
                 }
            case "2":
                 {
                n = (HiddenField)e.Item.FindControl("IDProizvoda");
                break;
                 }
}

Ovaj kod se nece kompajlirati
Code:

switch (e.CommandName)
        {
            case "1":
                 {
                HiddenField n = (HiddenField)e.Item.FindControl("IDProizvoda");
                break;
                 }
            case "2":
                 {
                 HiddenField n = (HiddenField)e.Item.FindControl("IDProizvoda");
                break;
                 }
}


Ovaj hoce.
 
Odgovor na temu

[es] :: .NET :: ASP.NET :: Kako ovo radi? [ASP.NET 2.0][C#]

[ Pregleda: 4119 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.