C # Generics (Čeština)
Generic znamená obecnou formu, nikoli specifickou. V C#, generické prostředky nejsou specifické pro konkrétní datový typ.
C# umožňuje definovat generické třídy, rozhraní, abstraktní třídy, pole,metody, statické metody, vlastnosti, události, delegáti, a provozovatelé používající typ parametru a bez konkrétní datový typ. Parametr typu je zástupný symbol pro určitý typ zadaný při vytváření instance generického typu.
obecný typ je deklarován zadáním parametru typu v úhlových závorkách za názvem typu, např., TypeName<T>
kdeT
je typový parametr.
generická Třída
generické třídy jsou definovány pomocí parametru typu v úhlových závorkách za názvem třídy. Následující definuje obecnou třídu.
Nad DataStore
je generická třída., T
se nazývá parametr typu, který může být použit jako typ pole, vlastnosti, metody, parametry, návratové typy, a delegáti v DataStore
třídy. Například Data
je obecná vlastnost, protože jsme použili parametr type T
jako jeho typ, místo konkrétní datový typ.
T
. Můžete zadat libovolný název parametru typu., Obecně platí, že T
se používá, pokud existuje pouze jeden typový parametr. Doporučuje se použít více čitelný typ parametru název dle požadavku jako TSession
TKey
TValue
atd. Další informace o pokynech pro pojmenování parametrů můžete také definovat více parametrů typu oddělených čárkou.
instance Generic Class
instanci generických tříd můžete vytvořit zadáním skutečného typu v úhlových závorkách., Následující vytvoří instanci generické třídy DataStore
.
Výše uvedené, jsme specifikovali string
typu v lomených závorkách při vytváření instance. Tak, T
bude nahrazen string
typ kdekoli T
se používá v celé třídě v compile-time. Typ vlastnosti Data
by tedy byl string
.
následující obrázek ukazuje, jak generika funguje.,
můžete přiřadit hodnotu řetězce Data
majetku. Pokus o přiřazení jiných hodnot než řetězce bude mít za následek chybu kompilace.
můžete určit různé datové typy pro různé objekty, jak je uvedeno níže.
Generické Třídy Vlastnosti
- generické třídy zvyšuje znovupoužitelnost. Čím více parametrů typu znamená více opakovaně použitelné., Přílišná zobecnění však ztěžuje pochopení a udržení kódu.
- generická třída může být základní třídou pro jiné generické nebo nerodické třídy nebo abstraktní třídy.
- generická třída může být odvozena z jiných generických nebo generických rozhraní, tříd nebo abstraktních tříd.
generická pole
obecná třída může obsahovat obecná pole. Nelze jej však inicializovat.
následující deklaruje generic array.,
Obecné Metody
metoda deklarována s parametry typu pro její návratový typ nebo parametry, se nazývá generická metoda.
výše,AddorUpdate()
aGetData()
metody jsou obecné metody. Skutečný datový typ parametru item
bude zadán v době instalace DataStore<T>
, jak je uvedeno níže.,
typ generického parametru lze použít s více parametry s nebo bez generických parametrů a typu návratu. Následující jsou platné generické metody přetížení.
nerodická třída může zahrnovat obecné metody zadáním parametru typu v úhlových závorkách s názvem metody, jak je uvedeno níže.
výhody generik
- generik zvyšují opakovatelnost kódu. Nemusíte psát kód pro zpracování různých datových typů. generika
- jsou typově bezpečná., Pokud se pokusíte použít jiný typ dat, než je ten, který je uveden v definici, získáte chyby v době kompilace.
- Generic má výkonnostní výhodu, protože odstraňuje možnosti boxu a rozbalení.