Converter int em string?

499

Como posso converter um inttipo de dados em um stringtipo de dados em c #?

O pior sombrio
fonte

Respostas:

741
string myString = myInt.ToString();
Anthony Pegram
fonte
4
Meu problema com isso é que você perde a segurança do tipo. myInt poderia ser qualquer coisa. Nada aqui diz pegar um número inteiro e convertê-lo em uma string. myInt pode ser um objeto e um objeto não pode ser convertido em uma string. Isso é conhecido no momento da compilação, mas nem gera uma exceção de tempo de execução, apenas permite dados ruins.
Timothy Gonzalez
3
@ TimothyGonzalez Esse é um caso extremo, se você chamar .ToString (), geralmente porque você precisa que ele seja uma string e pode ser uma string.
EpicKip
35
@nfgallimore Não é um caso de margem válido, nem mesmo é um caso de margem nesta situação. O OP declarou que ele tinha um tipo int que ele queria converter em uma string. Se for um tipo int, então puro e simples, o valor é um int. O compilador garantirá que é esse o caso. Nem tenho certeza de como você saiu nessa tangente. O OP não perguntou como garantir que uma referência aleatória fosse um número inteiro e depois a convertesse em uma string. Talvez nesse caso você tenha razão, mas esse não é o caso.
AaronM
1
Esta solução lança exceção para nullvalores.
Mehdi Dehghani
18
Os comentários sobre esta resposta são ridículos.
524
string s = i.ToString();
string s = Convert.ToString(i);
string s = string.Format("{0}", i);
string s = $"{i}";
string s = "" + i;
string s = string.Empty + i;
string s = new StringBuilder().Append(i).ToString();
Xavier Poinas
fonte
6
Também você pode fazer issostring count = "" + intCount;
Dion Dirza
2
Todas essas soluções são igualmente eficientes? Eu imagino que o i.ToString () faz alguns boxe desnecessários do int, mas talvez isso seja otimizado de qualquer maneira.
Stephen Holt
43
.ToString()é a maneira mais eficiente de fazer a conversão. Todos os outros métodos apresentados aqui serão chamados de .ToString()qualquer maneira.
Xavier Poinas
6
Eu me sinto um pouco perturbado pelo fato de você manter a re-declarar a variávels
thecoshman
1
@XavierPoinas Embora eles possam chamar "ToString ()" - depende um pouco do que você planeja fazer com relação a qual é o mais eficiente. string s = "xyz" + i;criará uma nova string "xyz" - crie a nova string contendo seu número inteiro; e, em seguida, crie uma terceira string que contenha os 2 concated. string.Format("xyz{0}", i);por outro lado, é capaz de produzir apenas 2 strings - pois as concatena inline. Esse desempenho se torna mais visível à medida que as seqüências ficam mais longas.
UKMonkey
32

Apenas no caso de você querer a representação binária e ainda estar bêbado da festa da noite passada:

private static string ByteToString(int value)
{
    StringBuilder builder = new StringBuilder(sizeof(byte) * 8);
    BitArray[] bitArrays = BitConverter.GetBytes(value).Reverse().Select(b => new BitArray(new []{b})).ToArray();
    foreach (bool bit in bitArrays.SelectMany(bitArray => bitArray.Cast<bool>().Reverse()))
    {
        builder.Append(bit ? '1' : '0');
    }
    return builder.ToString();
}

Nota: Algo sobre não lidar com endianness muito bem ...

Edit: Se você não se importa em sacrificar um pouco de memória por velocidade, pode usar abaixo para gerar uma matriz com valores de string pré-calculados:

static void OutputIntegerStringRepresentations()
{
    Console.WriteLine("private static string[] integerAsDecimal = new [] {");
    for (int i = int.MinValue; i < int.MaxValue; i++)
    {
        Console.WriteLine("\t\"{0}\",", i);
    }
    Console.WriteLine("\t\"{0}\"", int.MaxValue);
    Console.WriteLine("}");
}
Onots
fonte
25
int num = 10;
string str = Convert.ToString(num);
Polaris
fonte
14

O método ToString de qualquer objeto deve retornar uma representação de string desse objeto.

int var1 = 2;

string var2 = var1.ToString();
Criança Voodoo
fonte
10

Mais adiante na resposta de @ Xavier, aqui está uma página que acelera as comparações entre várias maneiras diferentes de fazer a conversão de 100 iterações para 21.474.836 iterações.

Parece praticamente uma ligação entre:

int someInt = 0;
someInt.ToString(); //this was fastest half the time
//and
Convert.ToString(someInt); //this was the fastest the other half the time

fonte
9
string str = intVar.ToString();

Em algumas condições, você não precisa usar ToString()

string str = "hi " + intVar;
Mehmet Ince
fonte
8

ou:

string s = Convert.ToString(num);
Jesse C. Slicer
fonte
4

Nenhuma das respostas mencionou que o ToString()método pode ser aplicado a expressões inteiras

Debug.Assert((1000*1000).ToString()=="1000000");

mesmo para literais inteiros

Debug.Assert(256.ToString("X")=="100");

Embora literais inteiros como esse sejam frequentemente considerados como estilo de codificação ruim ( números mágicos ), pode haver casos em que esse recurso é útil ...

Lobo
fonte
3
using System.ComponentModel;

TypeConverter converter = TypeDescriptor.GetConverter(typeof(int));
string s = (string)converter.ConvertTo(i, typeof(string));
nmclean
fonte
Essa resposta apareceu na fila de revisão de baixa qualidade, provavelmente porque você não explicou o código. Se você o explicar (em sua resposta), é muito mais provável que você receba mais votos - e o questionador realmente aprenderá alguma coisa!
O cara com o chapéu
5
@TheGuywithTheHat Você notará que nenhuma das respostas aqui tem qualquer explicação do código, particularmente todos os exemplos de código nesta resposta altamente votada , porque é óbvio o que todos devem estar fazendo: converter um int em uma string. Na verdade, não precisamos de nada além da resposta aceita - i.ToString- o restante está aqui apenas por uma questão de perfeição e diversão.
nmclean
2
A falta de explicação em outras respostas não significa que todas as respostas devam não ter explicação. O único motivo pelo qual comentei essa resposta em particular é porque a vi na fila de revisão de baixa qualidade.
O cara com o chapéu
@TheGuywithTheHat Eu não estava sugerindo que minha resposta pode estar incompleta porque outras são; Estou dizendo que nenhum deles é (incluindo este) porque a intenção é óbvia no contexto desta questão.
nmclean
2
@reggaeguitar É principalmente uma resposta de brincadeira, nós propositadamente adicionamos maneiras cada vez mais obscuras de realizar uma das tarefas mais básicas. Mas, para sua pergunta, a vantagem desse método seria se você não conhecesse os tipos antecipadamente - em vez de typeof(int)e typeof(string)pudesse ter variáveis ​​Type, e ele encontraria e usaria um conversor apropriado sempre que existir.
Nmclean 23/05/19
1
string s = "" + 2;

e você pode fazer coisas legais como:

string s = 2 + 2 + "you" 

O resultado será:

"4 você"

Gilad F
fonte