Útmutató c #, kovariancia és ellentmondás az általánosságban

C # --- Útmutató a C # --- Kovariancia és ellentmondás az általánosságban

A C # 4.0 verzióban a kovariancia és a kontravariancia képességek kiterjesztésre kerültek a generikus típusú paraméterekre, amelyeket a generalizált interfészek és küldöttek használnak. A kovariancia és az ellentmondás elsősorban a .NET-keretrendszerben definiált általános interfészek és küldöttek használatából eredő különleges helyzetek racionális megoldására szolgál. Így a könyvtárban meghatározott egyes interfészek és küldöttek naprakészek lettek a típusparaméterek kovarianziójának és ellentmondásainak felhasználására. Természetesen a kovariancia és az ellentmondás előnyei felhasználhatók a saját erõk által létrehozott interfészekbe és küldöttségekbe is.

A kovariancia alkalmazása az általánosított felületen

Az általánosított interfész tekintetében a kovariancia olyan eszközként szolgál, amely lehetővé teszi, hogy a módszer visszaadja a típusparaméterben meghatározott osztályból származó típust. A múltban a visszatérési típusnak pontosan meg kell egyeznie a típusparaméterrel, mert szigorúan ellenőrizte a típusmegjelenítések általánosságait. A kovariancia enyhíti ezt a szigorú szabályt oly módon, hogy tipikus biztonságot nyújtson. A kovariáns típusú paramétert a ki kulcsszó használatával deklaráljuk. amely előzi meg a paraméter nevét.

A kovariancia alkalmazásának következményeinek megértése érdekében konkrét példát mutatunk be. Az alábbiakban egy nagyon egyszerű felület IMyInfo, amely a kovariancia:

Különös figyelmet kell fordítani arra, hogy hogyan jelenik meg az általánosított T típus paramétere, neve előtt a ki kulcsszó szerepel. Ebben az összefüggésben a kizáró kulcsszó azt jelzi, hogy a generikus T típus kovariancia. És mivel ez a kovariáns, a GetObject () metódus visszaküldi a generikus T típusú hivatkozást vagy bármely T-típusból származó osztályra hivatkozást.

Az ellentmondás alkalmazása az általánosított felületen

Az általánosított interfész tekintetében az ellentmondás arra szolgál, hogy lehetővé tegye egy olyan módszer használatát, amely egy olyan argumentumot használ, amelynek típusa a megfelelő típusú paraméterben meghatározott alaposztályra vonatkozik. A múltban a módszer-argumentum típusának pontosan ugyanolyannak kell lennie, mint a típusparaméter, mert a típus-illesztések általános érvényesítésének szigorú ellenőrzése történt. A kontravariancia enyhíti ezt a szigorú szabályt oly módon, hogy tipikus biztonságot nyújtson. Az ellentmondásos típusú paramétert a kulcsszó használatával jelentették be. amely előzi meg a paraméter nevét.

Amint láthatja, a T generikus típus ezen a felületen szerepel, mivel ellentmond a kulcsszónak a paraméter neve előtt. Megjegyezzük továbbá, hogy T a Show () metódus obj argumentumának típusparamétere.

A kontravariancia kiderül, hogy csak referenciatípusokra alkalmas, és az ellentmondásos típusú paraméter csak a módszer-argumentumokra alkalmazható. Ezért a kulcsszóban nem lehet megadni a visszatérési típusként használt típusú paraméterként.

Az interfészek kovarianziójának és ellentmondásainak felhasználását a következő példa szemlélteti: