Sugerir tradução
 
Outras sugestões:

progress indicator
Sem sugestões.
Clique para classificar e enviar comentários
MSDN
Biblioteca MSDN
Visual Studio 2008
Visual Studio
Visual C#
 C# para desenvolvedores do C++
Recolher Tudo/Expandir Tudo Recolher Tudo
Exibir Conteúdo: Lado a LadoExibir Conteúdo: Lado a Lado
Este conteúdo foi traduzido automaticamente e pode ser editado pelos membros da comunidade. Para melhorar a qualidade da tradução, clique no link Editar associado à frase que deseja modificar.
Visual C# Language Concepts
C# for C++ Developers

The following table contains important comparisons between C# and native C++, which does not use /clr. If you are a C++ programmer, this table will give you the most important differences between the two languages at a glance.

NoteNote:

C++ and C# projects are derived from different project models. For more information about the differences between C++ and C# projects, see Item Management in Projects and Using Solution Explorer.

Feature

Refer to the topic

Inheritance: In C++, classes and structs are virtually identical whereas in C#, they are quite different. C# classes can implement any number of interfaces, but can inherit from only one base class. Furthermore, C# structs do not support inheritance, and do not support explicit default constructors (one is provided by default).

class

interface

struct (C# Reference)

Arrays: In C++ an array is merely a pointer. In C#, arrays are objects that include methods and properties. For example, the size of an array can be queried via the Length property. C# arrays also employ indexers that verify each index used to access the array. The syntax for declaring C# arrays is different from that for C++ arrays: the tokens "[]" appear following the array type in C#, not the variable.

Arrays (C# Programming Guide)

Indexers (C# Programming Guide)

Booleans: In C++, the bool type is essentially an integer. In C#, there is no conversion between the bool type and other types.

bool

The long type: In C#, the long type is 64 bits, while in C++, it is 32 bits.

long

Passing parameters: In C++, all variables are passed by value unless explicitly passed with a pointer or a reference. In C#, classes are passed by reference and structs are passed by value unless explicitly passed by reference with the ref or out parameter modifiers.

struct

class

ref (C# Reference)

out (C# Reference)

The switch statement: Unlike the C++ switch statement, C# does not support fall-through from one case label to another.

switch

Delegates: C# delegates are roughly similar to function pointers in C++, are type-safe and secure.

delegate

Base-class methods: C# supports the base keyword for calling the overridden base class members from derived classes. Also, overriding virtual or abstract methods is explicit in C#, using the override keyword.

base

See also the examples for override

Method hiding: C++ supports the implicit "hiding" of method through inheritance. In C#, you must use the new modifier to explicitly hide an inherited members.

new

Preprocessor directives are used for conditional compilation. No header files are used in C#.

C# Preprocessor Directives

Exception handling: C# provides the finally keyword to provide for code that should be executed regardless of whether an exception is thrown.

try-finally

try-catch-finally

C# operators: C# supports additional operators such as is and typeof. It also introduces different functionality for some logical operators.

& Operator

| Operator

^ Operator

is

typeof

The typedef keyword. In C++, typedef is used to create shorter or more convenient names for types that have already been declared. In C#, the using directive provides this capability.

using Directive (C# Reference)

The extern keyword: In C++, extern is used to import types. In C#, extern is used to create aliases for using different versions of the same assembly.

extern

The static keyword: In C++, static can be used both to declare class-level entities and to declare types that are specific to a module. In C#, static is only used to declare class-level entities.

static

The Main method in C# is declared differently from the main function in C++. In C# it is capitalized, and always static. Also, support for processing of command-line arguments is much more robust in C#.

Main() and Command-Line Arguments (C# Programming Guide)

Pointers are allowed in C#, but only in unsafe mode.

unsafe

Overloading operators is performed differently in C#.

C# Operators

Strings: In C++ a string is simply an arra of characters. In C#, strings are object that support robust searching methods.

string

String

The foreach keyword enables you to iterate through arrays and collections.

foreach, in

Globals: In C#, global methods and variables are not supported. Methods and variables must be contained within a class or struct.

General Structure of a C# Program

The #define preprocessing directive: In C++ the #define directive is commonly used to declare constant values. In C# the #define directive cannot be used for this purpose. Constants in C# are best defined as enumerated types (integral values only) or as static members of a class or struct. If you have several such constants, consider creating a separate "Constants" class to hold them.

static (C# Reference)

const (C# Reference)

enum (C# Reference)

Importing types: In C++, types common to multiple modules are placed in header files. In C#, this information is available via metadata.

using

Metadata Overview

Local variables in C# cannot be used before they are initialized.

Methods (C# Programming Guide)

Memory management: C++ is not a garbage collected language; memory that is not explicitly release remains allocated until the process terminates. C# is a garbage collected language.

Garbage Collection

Destructors: C# has different syntax for deterministically releasing unmanaged resources.

Destructors

using Statement (C# Reference)

Constructors: Similar to C++, if you do not provide a class constructor in C#, a default constructor is automatically generated for you. The default constructor initializes all the fields to their default values.

Instance Constructors

Default Values Table

C# does not support bit fields.

C++ Bit Fields

C# input/output services and formatting rely on the run-time library of the .NET Framework.

C# Language Tour

Formatting Numeric Results Table

In C#, method parameters cannot have default values. Use method overloads if you want to achieve the same effect.

Compiler Error CS0241

In C#, generic types and methods provide for type parameterization in a way that is similar to C++ templates. There are significant differences, however. For example, in C# generic type information is preserved at run time.

Generics in C#

The as keyword is similar to a standard cast, except that rather than throw an exception if the conversion fails, the return value is null. This is similar to using static_cast in C++, which, unlike dynamic_cast, performs no run-time check and hence does not throw an exception on failure.

as (C# Reference)

For more information about comparisons between keywords in C# and other programming languages, see Language Equivalents. For information on the general structure of C# applications, see General Structure of a C# Program (C# Programming Guide).

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

Conteúdo da Comunidade   O que é Conteúdo da Comunidade?
Adicionar novo conteúdo RSS  Anotações
Processing
© 2010 Microsoft Corporation. Todos os direitos reservados. Termos de Uso | Marcas Comerciais | Política de Privacidade
Page view tracker