Este é um conteúdo traduzido por máquina.
Conceitos da linguagem Visual C#
C# para desenvolvedores do C++

A tabela a seguir contém comparações importantes entre C# e C++ nativo, que não usa /clr. Se você for um programador C++, esta tabela irá fornecer as diferenças entre as duas linguagens de forma bem genérica.

ObservaçãoObservação:

Os projetos C++ e C#s são derivados de modelos de projetos diferentes. Para obter mais informações sobre as diferenças entre os projetos do C++ e C#, consulte Gerenciamento de itens em projetos e usando Gerenciador de Soluções.

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#)

Para obter mais informações sobre as 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 de aplicativos C#, consulte Estrutura geral de um programa C# (guia de programação C#) .

Consulte também

Conceitos

Marcas :


Page view tracker