Kezdőoldal » Számítástechnika » Programozás » Kiterjesztett metódus miért...

Kiterjesztett metódus miért hívható paraméter nélkül mikor pl vár egy stringet? C#.

Figyelt kérdés

Valahogyan behelyettesíttődik magától de hogyan?Ezt a fordító csinálja fordítási időben?


Ha egy kiterjesztett metódus paraméterlistájában a this után string van akkor ez azt jelenti,hogy ezt a kiterjesztett metódust nem használhatom más típuson csak stringen.Tehát az intellisense nem fogja felajánlani ezt a metódust ha nem string után írom a pontot?


2014. aug. 26. 17:26
 1/3 anonim ***** válasza:
Extension methodok (vagy ahogy te írod, kiterjesztett metódusok) arra valók, hogy egy osztály funkcionalitását kiegészítsék anélkül, hogy származtatni kéne tőle. Gyakorlatban nem más, mint egy statikus metódus, amelyik első paramétereként megkapja az osztály egy példányát, tehát az osztály privát metódusait, adattagjait nem fogod tudni elérni vele. Ugyanebből következik, hogy más típusú objektummal nem fog működni.
2014. aug. 26. 17:34
Hasznos számodra ez a válasz?
 2/3 A kérdező kommentje:

Tudom,hogyan használjam csak azt nem értem,hogy miért lehetséges pont operátorral hivatkozni erre(pl str.ExtMethod()) mikor ez nem a string típus metódusa hanem egy saját classal bevezetett statikus típusé?

Hogyan van ez megoldva a háttérben?


Miért lehetséges objektummal hivatkozni extension tagfüggvényre mikor ez statikus.

Statikus tagokra pedig osztálynévvel hivatkozunk.

2014. aug. 31. 03:07
 3/3 anonim ***** válasza:

Syntax sugar (szintaktikai édesítőszer) ezeknek a neve: a használatot könnyíti meg. Ahogy a property-k is függvényekké fordítódnak az IL kódban, úgy az extension methodok is ott "helyettesítődnek be" a static függvény hívására. De ezt a dokumentációban is említi ( [link] ):

"In your code you invoke the extension method with instance method syntax. However, the intermediate language (IL) generated by the compiler translates your code into a call on the static method. Therefore, the principle of encapsulation is not really being violated. In fact, extension methods cannot access private variables in the type they are extending."

2014. aug. 31. 09:53
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, 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!