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: 1060 | Odgovora: 9 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Shevchenko

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



Profil

icon Kako ovo radi? [ASP.NET 2.0][C#]26.12.2006. u 03:24

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

http://www.myspace.com/vasiljevski
http://www.facebook.com/profile.php?id=1043105384
26.12.2006. u 03:24 

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
To ne radi...
26.12.2006. u 11:51 

Shevchenko

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



Profil

icon Re: Kako ovo radi? [ASP.NET 2.0][C#]26.12.2006. u 12:54
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

http://www.myspace.com/vasiljevski
http://www.facebook.com/profile.php?id=1043105384
26.12.2006. u 12:54 

VerbatimBOT
Aleksandar Dragosavac
Senior .NET Developer
Serbia, Belgrade

Član broj: 84129
Poruke: 224
217.24.18.*

Sajt: https://www.xing.com/prof..


Profil

icon Re: Kako ovo radi? [ASP.NET 2.0][C#]26.12.2006. u 13:09
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.
26.12.2006. u 13:09 

spartak

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



Profil

icon Re: Kako ovo radi? [ASP.NET 2.0][C#]26.12.2006. u 15:22
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.
26.12.2006. u 15:22 

Shevchenko

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



Profil

icon Re: Kako ovo radi? [ASP.NET 2.0][C#]26.12.2006. u 17:17
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

http://www.myspace.com/vasiljevski
http://www.facebook.com/profile.php?id=1043105384
26.12.2006. u 17:17 

Dejan Vesic
Dejan Vesic
CTO, GTECH Belgrade
Beograd

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

Sajt: www.vesic.org


Profil

icon Re: Kako ovo radi? [ASP.NET 2.0][C#]26.12.2006. u 17:32
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.


26.12.2006. u 17:32 

Shevchenko

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



Profil

icon Re: Kako ovo radi? [ASP.NET 2.0][C#]26.12.2006. u 17:46
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

http://www.myspace.com/vasiljevski
http://www.facebook.com/profile.php?id=1043105384
26.12.2006. u 17:46 

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
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. dereticd@seyampro.yu
15.01.2007. u 20:07 

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
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.
18.01.2007. u 11:40 

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

[ Pregleda: 1060 | Odgovora: 9 ]

Postavi temu Odgovori

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