Share via


Diferenças entre modelos C++ e Generics C# (guia de programação C#)

Translation from VPE for Csharp genéricos e C++ modelos são os dois recursos de linguagem que oferecem suporte para tipos parametrizados.No entanto, há muitas diferenças entre os dois.No nível de sintaxe, translation from VPE for Csharp genéricos são uma abordagem mais simples para tipos parametrizados sem a complexidade de modelos C++.Além disso, translation from VPE for Csharp não tenta fornecer toda a funcionalidade que fornecem modelos C++.No nível de implementação, a principal diferença é que as substituições de tipo genérico translation from VPE for Csharp são executadas no tempo de execução e as informações de tipo genérico, assim, são preservadas para objetos instanciados.Para obter mais informações, consulte Genéricos no time de execução (guia de programação translation from VPE for Csharp).

A seguir é as principais diferenças entre translation from VPE for Csharp genéricos e C++ modelos:

  • Translation from VPE for Csharp genéricos não fornecem a mesma quantidade de flexibilidade de modelos C++.Por exemplo, não é possível chamar os operadores aritméticos em uma classe genérica translation from VPE for Csharp, embora seja possível chamar os operadores definidos pelo usuário.

  • Translation from VPE for Csharp não permite que o modelo de tipo sem parâmetros, sistema autônomo, por exemplo, template C<int i> {}.

  • Não oferece suporte a translation from VPE for Csharp especialização explícita, ou seja, uma implementação personalizada de um modelo para um tipo específico.

  • Translation from VPE for Csharp não dá suporte parcial de especialização: uma implementação personalizada para um subconjunto dos argumentos de tipo.

  • Translation from VPE for Csharp não permite que o parâmetro de tipo a ser usado sistema autônomo classe base para o tipo genérico.

  • Translation from VPE for Csharp não permite parâmetros de tipo ter tipos padrão.

  • Em translation from VPE for Csharp, um parâmetro de tipo genérico não pode ser genérico, embora tipos construídos podem ser usados sistema autônomo genéricos.C++ permite que os parâmetros de modelo.

  • C++ permite que o código que talvez não seja válido para todos sistema autônomo parâmetros de tipo no modelo, em seguida, é verificado para o tipo específico usado sistema autônomo o parâmetro de tipo.Translation from VPE for Csharp requer código em uma classe a ser gravado de forma que ele funcionará com qualquer tipo que satisfaça as restrições.Por exemplo, em C++ é possível escrever uma função que usa os operadores aritméticos + e - em objetos do parâmetro de tipo, que produzirá um erro no momento da instanciação do modelo com um tipo que não oferece suporte a esses operadores. Translation from VPE for Csharp não permite isso; as construções de linguagem única permitidas são aqueles que pode ser deduzido de restrições.

Consulte também

Conceitos

Guia de Programação C#

Referência

Introdução ao Generics (guia de programação C#)

Outros recursos

Modelos