A .NET4-ben megjelent dynamic kulcsszó segítségével az objektumok dinamikussá tehetők, futási időben ezek az objektumok különböző típusokká konvertálhatók.
Az igaz, hogy a "dynamic" kulcsszó, de használhatjuk változónévként is (pl.: string dynamic = "honlap";).
Látható tehát az, hogy a dynamic használatát -ahol csak lehet- kerüljük a C# nyelvben, persze, akadnak kivételek. Ilyen a DLR (Dynamic Language Runtime), és az Interop használatát is bemutató cikkben is láttuk, ott is a dynamic került előtérbe.
Írjuk meg a következő programot, amely a dynamic kulcsszó használatát mutatja be.
class Program
{
static void Main(string[] args)
{
dynamic i = 10;
Console.WriteLine("Az i értéke : {0}", i);
Console.WriteLine("Az i értéke ToString()-gel: {0}", i.ToString());i = "WebElektronika";
Console.WriteLine("Az i értéke stringként : {0}", i);dynamic a = 10, b = 20;
dynamic d = a + b;
Console.WriteLine("A d értéke : {0}", d);
Console.WriteLine("A d típusa : {0}", d.GetType());
dynamic c = "hello";
d = a + c;
Console.WriteLine("A d értéke : {0}", d);
Console.WriteLine("A d típusa : {0}", d.GetType());int Eredmeny = a + b;
Console.WriteLine("Egészként : {0}", Eredmeny);
Console.WriteLine("dynamic-ként : {0}", (dynamic)Eredmeny);
dynamic datum = System.DateTime.Now;
Console.WriteLine("Dátum : {0}", datum);
// változóként történő használat
int dynamic = 5;
Console.WriteLine("Változóként : {0}", dynamic);Console.ReadLine();
}
}
Először létrehozzuk az "i" változót, amely dynamic típus, és az értéke 10. Ezt kiíratjuk kétszer is, a második esetben használjuk a ToString() metódust is, amelyet "fejből" kell beírnunk, hiszen az Intellisense nem alkalmazható itt.
Ezután az "i" változó új értéket kap, egy string-et. Látjuk tehát, hogy az erősen típusos C# nyelvben az "i" változó típust vált, egészből string lett.
Ezután létrehozunk újabb dynamic típusú változókat (a, b, d), majd kiíratjuk a "d" értékét, illetve a GetType() metódussal a "d" típusát (az "a" és a "d" értéke miatt Int32).
Ezt követően a dynamic típusú "c" egy sztringet kap az értékadásnál és a "d" új értéket kap. Emiatt a "d" típusa megváltozik.
Az int típusú "Eredmeny" változó két dynamic típusú változó értékét kapja meg. Láthatjuk itt, hogy a típuskonverzió létezik itt is, a dynamic-ból Int32 lett.
A dátumot is kiíratjuk, de nem DateTime típusként, hanem dynamic-ként. Végül pedig a dynamic kulcsszót nem típusként, hanem változónévként alkalmazzuk ebben a programban (1. ábra).

1. ábra Futási eredmény
(Címlapkép : https://i-msdn.sec.s-msft.com/dynimg/IC267818.jpeg)
Ebben a cikkben bemutatjuk a metódusok alapjait. Nem érintjük viszont például a túlterhelést, ezt egy következő részben tekintjük át.. . . .
A sorozatunknak ebben a részében átnézzük általánosságban az osztályok alapjait egy konzolalkalmazás segítségével. A konstruktorok viszont a következő részben kerülnek bemutatásra.. . . .
Ebben a cikkben nem csak a metódusok túlterhelését nézzük meg egy konkrét példa segítségével, hanem szóba kerülnek a generikusok is, szintén egy kisebb projekt keretén belül.. . . .