Sdílet prostřednictvím


Rozdíly mezi šablonami jazyka C++ a C# Generics (Příručka programování C#)

Generics C# a C++ šablony jsou obě funkce jazyka, které podporují parametrické typy.Existuje však mnoho rozdílů mezi nimi.Na úrovni syntaxe C# generics jsou jednodušší s parametry typů bez složitosti šablony jazyka C++.Kromě toho C# nepokouší poskytovat všechny funkce, které poskytují šablony jazyka C++.Na úrovni implementace hlavní rozdíl je obecný typ náhrady C# jsou prováděny za běhu a obecný typ informací a tím zachovat pro vytvořených objektů.Další informace naleznete v tématu Generics v době spuštění (Příručka programování C#).

Hlavní rozdíly mezi Generics C# a C++ šablony jsou následující:

  • C# generics neposkytují stejné množství pružnost jako šablony jazyka C++.Například není možné volat aritmetické operátory v C# Obecná třída, přestože je možné volat operátory definované uživatelem.

  • C# neumožňuje parametry šablony-type, jako například template C<int i> {}.

  • C# nepodporuje explicitní specializace; šablony pro konkrétní typ, vlastní implementaci.

  • C# nepodporuje částečné specializace: vlastní implementaci dílčí argumenty typu.

  • C# neumožňuje použít jako základní třída pro obecný typ parametru typu.

  • C# neumožňuje výchozí typy parametrů typu.

  • V jazyce C# obecný typ parametru nemůže být sám obecný, ačkoli vyrobeno typy lze použít jako generics.C++ nepovoluje parametry šablony.

  • C++ umožňuje kód, který nemusí být platné pro všechny parametry typu v šabloně, pak kontrolovány pro konkrétní typ použitý jako parametr typu.C# kód třídy zápis tak, že bude fungovat typu, která uspokojí omezení vyžaduje.Například v jazyce C++ je možné napsat funkci, používající aritmetické operátory + a - na parametr typu objektů, které ohlásí chybu při vytváření instance šablony s typem, který nepodporuje tyto operátory.C# zakazuje konstrukce pouze jazyka povoleny jsou ty, které lze vyvodit z omezení.

Viz také

Referenční dokumentace

Úvod do Generics (Příručka programování C#)

Koncepty

Příručka programování C#

Další zdroje

Šablony