Udostępnij za pośrednictwem


Różnice między szablonów języka C++ i C# generyczne (Podręcznik programowania C#)

Szablony generyczne C# i C++ są zarówno funkcje języka, które zapewniają obsługę typów sparametryzowanej.Jednakże istnieje wiele różnic między tymi dwoma.Na poziomie składni języka C# generyczne są prostsze do typów sparametryzowana bez złożoności szablonów języka C++.Ponadto C# nie usiłują dostarczać wszystkich funkcji, które zapewniają szablonów języka C++.Na poziomie implementacji podstawową różnicą jest, że C# typ rodzajowy substytucje są wykonywane w czasie wykonywania, jak i informacji typu rodzajowego jest tym samym zachowane dla wystąpień obiektów.Aby uzyskać więcej informacji, zobacz Generyczne w czasie uruchomienia (Podręcznik programowania C#).

Poniżej przedstawiono główne różnice między generyczne C# i szablonów języka C++:

  • C# generyczne nie zapewniają taką samą ilość roztworu elastyczności jako szablonów języka C++.Na przykład to nie jest możliwe wywołać operatory arytmetyczne w C# klasą rodzajową, chociaż wywołanie operatory zdefiniowane przez użytkownika.

  • C# nie zezwala na parametry szablonu-type, takich jak template C<int i> {}.

  • C# nie obsługuje wyraźnej specjalizacji; oznacza to, że niestandardowej implementacji szablonu dla określonego typu.

  • C# nie obsługuje częściowe specjalizacji: niestandardową implementację podzbiór argumentów typu.

  • C# nie zezwala na parametr typu służyć jako klasa bazowa dla typu rodzajowego.

  • C# nie zezwala na parametry typu mają domyślne typy.

  • W języku C# parametr typu rodzajowego sam można rodzajowy, chociaż typy konstruowanej mogą być używane jako generyczne.C++ umożliwiają parametry szablonu.

  • C++ umożliwia kod, który nie może być ważne dla wszystkich parametrów typu w szablonie, który następnie jest sprawdzana pod kątem określonego typu, używane jako parametru typu.C# wymaga kodu w klasie są zapisywane w taki sposób, że będzie on działał z dowolnego typu, który spełnia ograniczenia.Na przykład w języku C++ jest możliwe napisać funkcję, która używa operatory arytmetyczne + i - na obiektach parametru typu, który da błąd w momencie wystąpienia szablonu o typie, który nie obsługuje tych operatorów.C# uniemożliwia to; konstrukcje języka tylko dozwolone są te, które można wywnioskować z ograniczeniami.

Zobacz też

Informacje

Wprowadzenie do generyczne (Podręcznik programowania C#)

Koncepcje

Podręcznik programowania C#

Inne zasoby

Szablony