Pergunta

Enquanto escrevo aplicativos usando o framework C++ .NET, quero fazer uma pergunta.

Quando estou escrevendo código exatamente para "for loop", sempre uso este estilo de codificação:

for( int i=0; i<somevalue; ++i ) {
    // Some code goes here.
}

mas como estou usando C++ .NET posso escrever

for( System::Int32 i=0; i<somevalue; ++i ) {
    // Some code goes here.
}

Acho que não há diferença, estou certo?Se não, você pode explicar qual é a diferença entre essas duas maneiras e.qual é mais eficaz?

Foi útil?

Solução

A única diferença provavelmente é ser explícito sobre a faixa de valores suportada por int e System::Int32.

System::Int32 torna o 32 bits mais explícito para quem lê o código.Deve-se usar int onde há apenas necessidade de 'um número inteiro', e use System::Int32 onde o tamanho é importante (código criptográfico, estruturas) para que os leitores fiquem claros, mantendo o mesmo.

Usando int ou System::Int32o código resultante será idêntico:a diferença é puramente de legibilidade explícita ou aparência do código.

Outras dicas

O Especificação da linguagem C++/CLI (pág.50) diz que:

Os tipos fundamentais são mapeados para os tipos de classe de valor correspondentes fornecidos pela implementação, como segue:

  • signed char mapas para System::SByte.
  • unsigned char mapas para System::Byte.
  • Se uma planície char está assinado, char mapas para System::SByte;Caso contrário, ele mapeia para System::Byte.
  • Para todos os outros tipos fundamentais, o mapeamento é definido pela implementação [ênfase minha].

Esse difere de C#, em que int é especificamente definido como um apelido para System.Int32.Em C++/CLI, como em ISO C++, um int tem “o tamanho natural sugerido pela arquitetura do ambiente de execução”, e só tem garantia de ter pelo menos 16 bits.

Na prática, no entanto, o .NET não funciona em sistemas de 16 bits, portanto, você pode assumir com segurança o sistema de 32 bits intS.

Mas tenha cuidado com long:Visual C++ o define como 32 bits, que é não o mesmo que um C# longo.O equivalente em C++ de System::Int64 é long long.

Não.Um deles é apenas um apelido para o outro.

int em C# é o mesmo que System.Int32 de .Net.

Aparentemente, ao contrário de C e C++ regular, C# e C++/CLI têm um int tipo que tem sempre 32 bits de comprimento.

Isto é confirmado por MSDN, então a resposta é que não há diferença entre os dois, a não ser o fato de que int é consideravelmente mais rápido digitar do que System::int32.

Os dois, int e int32, são de fato sinônimos; int terá uma aparência um pouco mais familiar, Int32 torna o 32 bits mais explícito para quem lê seu código.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top