A tabela a seguir contém importantes comparações entre C# e C++ nativo, que não usa /clr. Se você for um programador C++, esta tabela permitirá que você as diferenças entre duas linguagens de relance as mais importantes.
Observação
Projetos C# e C++ são derivados dos modelos de projetos diferentes. Para obter mais
informações sobre as diferenças entre projetos C++ e C#, consulte Gerenciamento item no
projetos e Usando Solution Explorer.
Recurso Consulte o tópico
Herança: em C++, classes e estruturas são praticamente idênticas enquanto em C#, eles são bem diferentes. Classes C# pode implementar qualquer número de interfaces, mas pode herdar de apenas uma classe base. Além disso, estruturas C# não oferece suporte a herança, e não oferecerem suporte para construtores padrão explícito (um é fornecida por padrão).
Classe Interface
struct (Referência do C#)
Matrizes: em C++ uma matriz é simplesmente um ponteiro. No C#, matrizes são objetos que incluem métodos e propriedades. Por exemplo,
o tamanho de uma matriz pode ser consultado via a Length propriedade.
Matrizes C# também empregar Indexadores que verificam cada índice usado para acessar a matriz. A sintaxe de declaração matrizes C# é diferente do idioma para matrizes C++: os símbolos [] " " aparecer após o tipo de matriz no C#, não a variável.
Matrizes (Guia de programação do C#) Indexadores (guia de programação C#)
nenhuma conversão entre o bool tipo e outros tipos.
O long tipo enquanto em C++, ele está 32 bits.: em C#, o long tipo é 64 bits,
long
Passar parâmetros: em C++, todas as variáveis são passados por valor, a menos que explicitamente passados com um ponteiro ou uma
referência. Do ref no C#, classes são passados por referência e estruturas são passadas pelo valor a menos que explicitamente passados por referência com ou out modificadores de parâmetro.
struct Classe
(referência) C# ref Fora (referência C#)
A switch instrução: ao contrário a instrução C++ switch, C# não oferece suporte through fall-de um rótulo case para outro.
Alternar
Representantes: representantes C# são aproximadamente semelhantes aos indicadores de função em C++, são de tipo seguro e segura.
Delegar
Métodos de classe base: C# oferece suporte a base palavra-chave para chamar os membros de substituído classe base de classes derivadas. Além disso, substituir métodos virtual ou abstract é explícito em C#, usando a override palavra-chave.
Base
Consulte também os exemplos para
Substituir
Ocultando método: C++ oferece suporte a implícito " ocultar " do método através de herança. Em C#, você deve usar o new modificador para explicitamente ocultar um membros herdadas
Novo
Diretivas de pré-processamento são usadas para compilação condicional. Nenhum arquivo de cabeçalho são usados em C#.
Directives Preprocessor C#
A manipulação de exceção e exceção é acionada.: C# fornece palavra- chave finally para fornecer para código que deve ser executado independentemente de se
finally try- finally try-catch-
Operadores C# e typeof.: C# oferece suporte, como is operadores adicionais Ele também apresenta funcionalidade diferente para alguns operadores lógicos. & Operator Operador | Operador ^ é TypeOf
Palavra-chave extern: em C++, extern é usado para importar tipos. No C#, extern é usada para criar aliases para usar versões diferentes do mesmo conjunto.
extern
Palavra-chave static: em C++, static pode ser usado tanto para declarar entidades nível de classe e para declarar tipos que são específicos para um módulo. No C#, static só é usada para declarar entidades nível de classe.
static
O Main método em C# é declarado de forma diferente da função main em C++. Em C#, ele seja maiúscula e sempre static. Além disso, o suporte para processamento de argumentos de linha de comando é muito mais robusta em C#.
Main() e argumentos de linha de comando (Guia de programação C#)
Ponteiros são permitidos em C#, mas somente no unsafe modo. Não seguro
Sobrecarga operadores será executada de maneira diferente em C#. Operadores C#
Seqüências: em C++ uma seqüência é simplesmente um arra de caracteres. Em C#, seqüências são objeto que oferecem suporte robustos métodos de pesquisa.
string String
Globals: em C#, não há suporte para métodos globais e variáveis Métodos e variáveis precisa estar contidos em ou struct. um class
Estrutura geral de um programa C#
Importando Tipos: em C++, tipos comuns a vários módulos são colocados em arquivos de cabeçalho. No C#, essas informações está disponíveis através de metadados.
Usando
Visão Geral Sobre Metadados
Variáveis locais 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 é uma linguagem de lixo coletado; memória que é não explicitamente Release permanece alocada até que o processo termina. C# é uma linguagem de lixo coletado.
Coleta de Lixo
Destructors: C# tem sintaxe diferente para deterministically liberando recursos não gerenciados.
Destructors Instrução using (Referência do C#)
Construtores: similar ao 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 todos os campos para seus valores padrão.
Construtores da instância
Tabela de valores padrão
C# não oferece suporte campos Bit. Campos bit C++
Serviços de entrada / saída C# e formatação contam com a biblioteca de tempo de execução do .NET Framework.
Tour linguagem C# Formatação numérica tabela de resultados
Em C#, parâmetros de método não podem ter valores padrão. Use overloads método se você desejar obter o mesmo efeito.
Compilador CS0241 de erro
Em C#, tipos genéricos e métodos fornecem para parametrização Tipo de uma maneira que é semelhante aos modelos C++, embora existem diferenças significativas.
Generics em C#
Palavra-chave as é semelhante a um efeito padrão, exceto que em vez de acionar uma exceção se falhar a conversão, o valor de retorno é nulo. Isso é semelhante ao uso static_cast em C++, que,. diferente
dynamic_cast, executa nenhuma verificação em tempo de execução e,
portanto, não não acionar uma exceção na falha
Como referência (C#)
Para obter mais informações sobre comparações entre palavras-chave em C# e outras linguagens
de programação, consulte Equivalentes do idioma. Para obter informações sobre a estrutura geral