[ gristic @ 01.09.2006. 15:49 ] @
Kako mogu dinamicki da definisem promenjive u C#. Nesto kao u PHP-u: for($i=0;$i<10;$i++) { lokal$i=something; } |
[ gristic @ 01.09.2006. 15:49 ] @
[ VerbatimBOT @ 01.09.2006. 15:55 ] @
Hm... nisam siguran da se to zove dinamičko definisanje, ali možeš bilo gde u kodu da ih definišeš:
Code: for (int i=0; i<uslov; i++) { // ovde dolazi neki kod } [ mmix @ 01.09.2006. 16:02 ] @
Citat: gristic: Kako mogu dinamicki da definisem promenjive u C#. Nesto kao u PHP-u: for($i=0;$i<10;$i++) { lokal$i=something; } Ne mozes, C# (a ni drugi CLI compliant jezici) nisu scripting jezici i objekti nisu dinamicki prosirivi. Kompajler mora da zna SVE lokalne promenljive zbog alokacije na steku i sve klase su immutable u trenutku izvrsenja. Predlazem u jednostavnijoj varijanti koriscenje nizova, a u komplikovanijoj varijanti mozes da iskorsits reflection da napravis svoju dinamicku klasu (ali to je bas heavy i totalno neprakticno za vecinu primena) [ Dragi Tata @ 01.09.2006. 17:18 ] @
Citat: mmix: Ne mozes, C# (a ni drugi CLI compliant jezici) nisu scripting jezici i objekti nisu dinamicki prosirivi. Proveri IronPython :) [ gristic @ 02.09.2006. 07:08 ] @
Kako onda da zavisno od neke promenljive definisem odredjeni broj controla.
Na primer: ako je x=5 da definisem 5 razlicitih TextBox-ova? Pri cemu unapred ne znam kolika je promenljiva x. [ jablan @ 02.09.2006. 08:31 ] @
Code: int n = 5; ArrayList boxovi = new ArrayList(); for (int i = 0; i < n; i++) { TextBox tb = new TextBox(); boxovi.Add(tb); } [ gristic @ 02.09.2006. 15:27 ] @
Hvala puno. To je resilo moj problem
[ mmix @ 05.09.2006. 02:49 ] @
Citat: Dragi Tata: Proveri IronPython ![]() Abomination ![]() Al opet, sve je bolje od IDispatch2 ![]() ![]() Hmm, nisam bas u toku sa pitonom, al zar je stvarno moguce da mutiras .NET klasu tokom runtime-a? Ako jeste, kako iskoristiti taj late binding pri konzumiranju asemblija (narocito iz drugih CLI jezika). Nesto mi nisu sve koze na broju ovde ![]() ![]() [ Dragi Tata @ 05.09.2006. 13:02 ] @
Citat: mmix: Hmm, nisam bas u toku sa pitonom, al zar je stvarno moguce da mutiras .NET klasu tokom runtime-a? Ako jeste, kako iskoristiti taj late binding pri konzumiranju asemblija (narocito iz drugih CLI jezika). Nesto mi nisu sve koze na broju ovde :) Ja koliko znam assembly metadata sadrzi definitivni contract sadrzanih klasa, dinamicke klase su cista jeres :) U stvari, tip koji je napravio IronPython je želeo da dokaže kako je .NET loša platforma za dinamičke jezike, i onda je vremenom promenio mišljenje i sad radi za MS :) CLR je zaista pravljen za static typing, ali kad pogledaš mehanizme kao što su refleksija i emit, vidiš da je u stvari moguće praviti i dinamičke jezike na .NET platformi. U stvari i VB.NET je moguće koristiti dinamički, mada obično nije preporučljivo: http://www.novetehnologije.com/Default.aspx?tabid=88 Ako te baš interesuje implementacija IronPython-a, možeš da skineš source ovde: http://www.codeplex.com/Source...ts.aspx?ProjectName=IronPython Interesantno je da će IronPython izgleda da bude na listi "zvaničnih" MS jezika - sprema se i dodatak za VS. [ mmix @ 05.09.2006. 14:41 ] @
Citat: Dragi Tata: CLR je zaista pravljen za static typing, ali kad pogledaš mehanizme kao što su refleksija i emit, vidiš da je u stvari moguće praviti i dinamičke jezike na .NET platformi. U stvari i VB.NET je moguće koristiti dinamički, mada obično nije preporučljivo: http://www.novetehnologije.com/Default.aspx?tabid=88 To da, pravio sam ja svoje emitere da kreiram dinamicke klase bazirane na externoj shemi kako bi omogucio databinding iz dizajnera. Ali ono sto ja ne razumem je kako IronPython moze da promeni klasu jednom kad se emituje? Osnovna osobina scriptable jezika je da mogu u bilo kom trenutku u runtime-u da prosirim klasu i da npr dodam svoj metod. Cak i ako se implementira neka varijanta IDispatch2 interfejsa kako prevariti .NET kompajler da uopste pokusa da uradi LateBinding na drugoj .NET klasi (osim ako ne misle da ja svaki put castujem objekat u Object tip ?!?), ne vidim kako je ovo moguce bez promena na kompajleru, a sa druge strane ce takva promena na kompajleru spreciti strong type checking i otvoriti pandorinu kutiju runtime gresaka od kojih pate svi scriptable jezici... Citat: Dragi Tata:Interesantno je da će IronPython izgleda da bude na listi "zvaničnih" MS jezika - sprema se i dodatak za VS. Yuck, al ako deca vole sto da ne... ![]() [ Dragi Tata @ 05.09.2006. 15:27 ] @
[ mmix @ 06.09.2006. 13:17 ] @
Citat: Zezam se, python je ok, ja samo imam averziju prema scriptable jezicima, posto takve jezike svi tretiraju kao "lake" pa ih daju pocetnicima da rade i onda to na kraju zavrsi disfunkcionalno na mom spisku taskova. C# je bio blagoslov za mene, ako ni zbog cega drugog onda zbog strong type-inga sto je sprecavalo sampione da mi salju sintaksno/tipsko neispravan kad, ako .NET krene scriptable putem bice belaja. Mada nista od ovog ne odgovara na moje pitanje, kako dinamicki prosiriti klasu/objekat jednom kad se publikuje ![]() Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|