Pergunta

Eu sempre tenho que converter um valor retreived (geralmente como uma string) - e, em seguida, convertê-lo em um int. Mas em C # (.Net) você tem que escolher entre int16, int32 ou int64 - como você sabe qual escolher quando você não sabe o quão grande o seu número de recuperados serão?

Foi útil?

Solução

Todos aqui que mencionou esse declarar um carneiro Int16 salva deve obter um downvote.

A resposta à sua pergunta é usar a palavra-chave "int" (ou se você sentir como ele, use "Int32").

Isso dá-lhe uma gama de até 2,4 bilhões de números ... Além disso, os processadores de 32 bits irá lidar com esses ints melhor ... também (e O MAIS importante razão ) é que, se você está pensando em usando esse int por qualquer motivo ... ele provavelmente terá de ser um "int" (Int32).

No framework .Net, 99,999% dos campos numéricos (que são números inteiros) são "ints" (Int32).

Exemplo:. Array.length, Process.ID, Windows.Width, Button.Height, etc, etc, etc 1 milhão de vezes

EDIT:. Eu percebo que o meu mau humor vai ficar me down-votado ... mas esta é a resposta certa

Outras dicas

Só queria acrescentar que ... eu me lembrei que, nos dias de .NET 1.1 do compilador foi otimizado para que operações de 'int' são realmente mais rápido do que as operações de bytes ou curtas.

Eu acredito que mantém até hoje, mas eu estou correndo alguns testes agora.


EDIT: Eu tenho uma descoberta surpresa: a adição, subtração e operações de multiplicação para curtas (s) realmente voltar int

já repetidamente tentando TryParse () não faz sentido, você tem um campo declarado. Você não pode mudar de idéia a menos que você faça esse campo do tipo Object. Não é uma boa idéia.

dados seja qual for o campo representa tem um significado físico. É uma idade, um tamanho, uma contagem, etc. quantidades físicas têm restrições realistas sobre a sua gama. Escolha o tipo int que pode armazenar desse intervalo. Não tente consertar um estouro, seria um erro.

Ao contrário do que a resposta mais popular atual, inteiros curtos (como Int16 e SByte) fazer muitas vezes ocupam menos espaço na memória do que números inteiros maiores (como Int32 e Int64). Você pode facilmente verificar isso instanciar grandes conjuntos de sbyte / short / int / long e usando perfmon para medir tamanhos de heap gerenciado. É verdade que muitos sabores CLR irá alargar estes números inteiros para otimizações específicas-CPU ao fazer aritmética sobre eles e tal, mas quando armazenados como parte de um objeto, eles ocupam apenas a quantidade de memória como é necessário.

Então, você definitivamente deve levar em consideração o tamanho, especialmente se você estará trabalhando com grande lista de números inteiros (ou com grande lista de objetos que contêm inteiro campos). Você também deve considerar as coisas como CLS cumprimento (que não permite quaisquer números inteiros sem sinal em membros públicos).

Para casos simples, como converter uma string para um inteiro, eu concordo um (# int C) Int32 normalmente faz mais sentido e é provável que outros programadores irão esperar.

Se nós estamos falando apenas de um número par, escolhendo o maior não vai fazer uma diferença notável em sua uso geral da memória RAM e será apenas trabalho. Se você está falando sobre os lotes de números, você vai precisar usar TryParse () sobre eles e descobrir o menor tipo int, para salvar ram.

Todos os computadores são finitos. Você precisa definir um limite superior com base no que você acha que seus requisitos de usuários será.

Se você realmente não tem limite superior e quer permitir valores 'ilimitado', tente adicionar as bibliotecas de tempo de execução .Net Java para seu projeto, o que permitirá que você use a classe java.math.BigInteger - que faz a matemática em quase tamanho -Unlimited inteiro.

Nota:. As bibliotecas .Net Java vêm com plena DevStudio, mas eu não acho que eles vêm com o Express

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