Recurso |
Consulte o tópico
|
|---|
Herança: No C++, classes e estruturas são praticamente idênticas enquanto em C#, eles são bastante diferentes. Classes do C# podem implementar qualquer número de interfaces, mas podem herdar apenas uma classe base. Além disso, estruturas de C# não oferecem suporte a herança e não oferecem suporte a construtores explícita (um é fornecido por padrão). |
Classe
Interface
struct (Referência C#)
|
Matrizes: No C++ uma matriz é simplesmente um ponteiro. Em C#, matrizes são objetos que Incluir métodos e propriedades. Por exemplo, o tamanho de uma matriz pode ser consultado por meio da propriedade Length. Matrizes de C# também empregam indexadores que verificam cada índice usado para acessar a matriz. A sintaxe para declarar matrizes C# é diferente de matrizes C++: os símbolos "[]" aparecem após o tipo de matriz em C# e não da variável. |
Matrizes (Guia de programação do C#)
Indexadores (guia de programação C#)
|
Booleanos: No C++, o tipo de bool é essencialmente um inteiro. Em C#, não há conversão entre o tipo bool e outros tipos. |
bool
|
O tipo de long: Em C#, o tipo de long é 64 bits, enquanto em C++, é 32 bits.
|
long
|
Passando parâmetros: No C++, Tudo as variáveis são passadas por valor, a menos que explicitamente passados com um ponteiro ou uma referência. Em C#, classes são passadas por referência e estruturas são passadas por valor, a menos que explicitamente passados por referência com os modificadores de parâmetros ref ou out. |
struct
Classe
ref (Referência C#)
check-out (Referência C#)
|
A instrução switch: Ao contrário da instrução de switch C++, C# não dá suAtravéste outono-Através um rótulo maiúscminúsc para outro.
|
Alternar
|
Delegados: Representantes de C# são aproximadamente semelhante a ponteiros de função em C++, são tipo seguro e seguro.
| Delegar |
Métodos de classe base: C# oferece suporte a palavra-chave base para chamar os membros de classe base substituído das classes derivadas. Além disso, substituir métodos virtuais ou abstratos é explícito em C#, usando a palavra-chave override. |
Base
Consulte também os exemplos de de Substituir
|
Ocultando do método: C++ oferece suAtravéste a implícita "ocultar" do método Através herança. Em C#, você deve usar o modificador de new para ocultar explicitamente um membros herdados. | Novo |
Diretivas de pré-processamento são usadas para compilação condicional. Nenhum arquivo de cabeçalho é usado em C#. |
Directives Preprocessor C#
|
Manipulação de exceção: C# fornece a palavra-chave finally para fornecer código que deve ser executado independentemente de se uma exceção é lançada.
|
try-finally
try-catch-finally
|
Operadores de C#: C# oferece suporte aos operadores adicionais, como is e typeof. Ele também apresenta funcionalidade diferente para alguns operadores lógicos. |
& Operador
Operador de |
Operator ^
é
TypeOf
|
A palavra-chave typedef. No C++, typedef é usado para criar nomes menores ou mais conveniente para tipos que já tenham sido declarados. Em C#, a diretiva de using fornece esse recurso. |
usando diretiva (Referência C#)
|
A palavra-chave extern: No C++, extern é usado para importar os tipos. Em C#, extern serve para criar aliases para usar diferentes versões do mesmo assembly. |
extern
|
A palavra-chave static: No C++, static pode ser usado para declarar a entidades de nível de classe e declarar tipos que são específicos para um módulo. No C#, static só é usada para declarar a entidades de nível de classe. |
estático
|
O método de Main em C# é declarado de forma diferente da função main em C++. No C# está em maiúsculas e sempre static. Além disso, o suporte para processamento de argumentos de linha de comando é muito mais robusto em C#. |
Main() e argumentos de linha de comando (Guia de programação C#)
|
Ponteiros são permitidos no C#, mas apenas no modo de unsafe.
| Não seguro |
Sobrecarga de operadores é executada diferente de C#.
|
Operadores C#
|
Seqüências de caracteres: No C++ uma Cadeia de Caracteres é simplesmente um arra de caracteres. Em C#, seqüências de caracteres são o objeto que oferecem suporte a métodos de pesquisando robustos. |
string
String
|
A palavra-chave foreach permite que você iterar Através matrizes e coleções.
|
foreach, em
|
Globais: No C#, variáveis e métodos Global não há suporte para. Métodos e variáveis devem estar contidas em um class ou struct. |
Estrutura geral de um programa C#
|
O #define pré-processamento de diretiva: No C++ a diretiva de #define costuma ser usada para declarar valores constantes. Em C# a diretiva de #define não pode ser usada para essa finalidade. Constantes em C# melhor são definidas como tipos enumerados (somente valores integrais) ou como membros estáticos de uma classe ou struct. Se você tiver várias constantes, considere a criação de uma classe de "constantes" separada para armazená-los. |
static (referência C#)
Const (Referência C#)
Enum (Referência C#)
|
Importando tipos: No C++, os tipos ComComumComum a Múltiplo módulos são colocados em arquivos de cabeçalho. Em C#, essa informação está disponível via metadados. | Usando
Visão Geral Sobre Metadados
|
Variáveis Local em C# não podem ser usadas antes que eles sejam inicializados.
|
Métodos (Guia de programação do C#)
|
Gerenciamento de memória: C++ não é um coletado Idioma; memória que não é explicitamente versão permanece alocada até que o processo termina. C# é um coletado Idioma. |
Coleta de Lixo
|
Destruidores: C# tem uma sintaxe diferente para deterministicamente liberar recursos não gerenciados.
|
Destructors
Usando Instrução (Referência C#)
|
Construtores: Semelhante a C++, se você não fornecer um construtor de classe em C#, um construtor padrão é gerado automaticamente para você. O construtor padrão inicializa Tudo campos com seus valores padrão. |
Construtores de instância
Tabela de valores padrão
|
C# não oferece suporte a campos de bits.
|
Campos de bit do C++
|
Serviços de entrada/saída de C# e a formatação dependem da biblioteca de tempo de execução do .NET Framework.
|
C# Idioma tour
Formatação numérica tabela de resultados
|
Em C#, parâmetros de método não podem ter valores padrão. Use sobrecargas do método se você desejar obter o mesmo efeito. |
CS0241 de erro do compilador
|
Em C#, tipos genéricos e métodos fornecem para o tipo de parametrização de uma forma que é semelhante a modelos C++. Existem diferenças significativas, entretanto. Por exemplo, no C# genérico Informações do tipo é mantido em tempo de execução. |
Classes genéricas em C#
|
A palavra-chave as é semelhante a uma conversão padrão, exceto que, em vez de lançar uma exceção se a falhar de conversão, o valor de retorno nulo. Isso é semelhante a usar static_cast no C++, que, ao contrário de dynamic_cast, não executa nenhuma Marcar de tempo de execução e, portanto, não lance uma exceção em caso de falha. |
como (Referência C#)
|