Kezdőoldal » Számítástechnika » Programozás » (C#) Miért lett letiltva a...

(C#) Miért lett letiltva a klasszikus kasztolás, míg az as kulcsszóval való nem?

Figyelt kérdés

Szóval alapvetően ismerem felületesen a kettő között a különbséget: az as-nál csak azt hajtod végre, hogy megpróbálod a kasztolást, még a klasszikusnál mindenképpen kasztolni akarsz. Viszont azt hittem, hogy ez teljes mértékben a programozó kezében van, hogy mit mikor használ, maximum kap egy exceptiont. Nekem viszont a Visual Studio teljesen aláhúzta a klasszikus kasztolást, egyedül az as-t engedte, pedig a kód azon állapotában biztos lett volna, hogy sikeres a kasztolás. Ha nem ismerem az as kulcsszót, akkor nem tudtam volna továbblépni.

Egy nem erre vonatkozó hibaüzenet ír ki a CS1061-et, szóval nem kaptam választ, hogy mikor engedi mindkettőt.


2021. júl. 9. 17:39
 1/8 anonim ***** válasza:
80%
Nincs letiltva, te baxtál el valamit.
2021. júl. 9. 18:03
Hasznos számodra ez a válasz?
 2/8 anonim ***** válasza:
10%

Szerintem hagyd inkább ezt az őskövület nyelvet, használd inkább JS-t, biztos találsz ép megoldást rá. Ne foglalkozz vele inkább, kifutóban van.


Üdv!

(egy mérnök)

2021. júl. 9. 19:33
Hasznos számodra ez a válasz?
 3/8 anonim ***** válasza:

'type' does not contain a definition for 'name' and no accessible extension method 'name' accepting a first argument of type 'type' could be found (are you missing a using directive or an assembly reference?).


This error occurs when you try to call a method or access a class member that does not exist.


Szóval, értelmezzük.


Egy olyan típust/osztályt/objektumot használsz, amely nem tartalmaz valamilyen metódust/függvényt vagy valamilyen osztálytagot/változót. Ennek nincs köze a castoláshoz, valószínűleg nem is a castolás miatt kapod, hanem miután castolod valami mássá az objektumod, akkor abban az állapotában már nem tartalmazza azt a dolgot, amihez hozzá akarsz férni.


De nagyon sokat segítene, ha megosztanád a kódod egy kódmegosztón (google: codeshare sites).


A #2-vel ne foglalkozz, szerinte az emberek azért éheznek a világ más tájain, mert nem keresnek eleget, a programozók közül pedig mindenki buta, aki mást állít, mint amiben ő hisz.

2021. júl. 9. 19:39
Hasznos számodra ez a válasz?
 4/8 anonim ***** válasza:
0%
#3 minden szavad ostobaság, és kontárkodás. Ignorálni!
2021. júl. 9. 19:43
Hasznos számodra ez a válasz?
 5/8 A kérdező kommentje:

#3 Közben addig kísérleteztem, míg rájöttem, hogy mi a hiba. Szintaktikai hibát vétettem, csak ugye a hibaüzenet nem ebben segített.


Az as-os verzió, ami eredetileg is jó volt:

(Objektum as Típus).Property


Hagyományos kasztolás, ahogy rossz volt, és feldobta a CS1061-et:

(Típus)Objektum.Property


Ahogy megjavult:

((Típus).Objektum).Property

2021. júl. 9. 21:24
 6/8 A kérdező kommentje:
*((Típus)Objektum).Property
2021. júl. 9. 21:24
 7/8 anonim ***** válasza:

Segített az, a Property t próbáltad castolni, nem magát az Objektumot, a hibaüzenet jelzi hogy ez nem fog menni. Ugyanez a logika as operátorral nem úgy nézett volna ki ahogy fentebb írtad, hanem így

Objektum.Property as Típus

2021. júl. 10. 08:22
Hasznos számodra ez a válasz?
 8/8 anonim ***** válasza:
Tényleg hanyagold a C# -ot, tanulj inkább JS -t. Sokkal jobban jársz...
2021. júl. 16. 15:44
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!