2010-06-21 34 views

Respuesta

520
string myString = myInt.ToString(); 
+2

Mi problema con esto es que pierdes seguridad tipo. myInt podría ser cualquier cosa. Nada aquí dice tomar un número entero y convertirlo en una cadena. myInt podría ser un objeto y un objeto no puede convertirse en una cadena. Eso es conocido en tiempo de compilación, pero ni siquiera generaría una excepción de tiempo de ejecución, solo permitiría datos incorrectos. –

+0

@TimothyGonzalez Ese es un caso extremo, si llama a .ToString() es generalmente porque necesita que sea una cadena y puede ser una cadena. – EpicKip

18
int num = 10; 
string str = Convert.ToString(num); 
11

El método ToString de cualquier objeto que se supone que devolver una representación de cadena de este objeto.

int var1 = 2; 

string var2 = var1.ToString(); 
7

o:

string s = Convert.ToString(num); 
421
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(); 
+33

variedad es la sal de la vida. –

+17

@variety, espero que no estés casado con esas opiniones: p – VoodooChild

+6

también puedes hacer esto 'string count =" "+ intCount;' –

8
string str = intVar.ToString(); 

En algunas condiciones, yo no tienen que utilizar ToString()

string str = "hi " + intVar; 
7

Más adelante a @ respuesta de Xavier, here's a page that does speed comparisons entre varios diferentes formas de hacer el conversión de 100 iteraciones hasta 21,474,836 iteraciones.

Parece más bien un empate 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 
5
using System.ComponentModel; 

TypeConverter converter = TypeDescriptor.GetConverter(typeof(int)); 
string s = (string)converter.ConvertTo(i, typeof(string)); 
+0

Esta respuesta apareció en la cola de revisión de baja calidad, presumiblemente porque no explicó el código. Si lo explica (en su respuesta), es mucho más probable que obtenga más votos positivos, ¡y el que pregunta realmente aprende algo! –

+4

@TheGuywithTheHat Notarás que ninguna de las respuestas aquí tiene ninguna explicación del código, en particular todas las muestras de código en [esta respuesta muy votada] (http://stackoverflow.com/a/3081940/933416), porque es obvio lo que todos deben estar haciendo: convertir un int en una cadena. A decir verdad, no necesitamos nada más allá de la respuesta aceptada, "i.ToString", el resto solo está aquí por completo y divertido. – nmclean

+0

La falta de una explicación en otras respuestas no significa que todas las respuestas carezcan de explicación. La única razón por la que comento esta respuesta en particular es porque la vi en la cola de revisión de baja calidad. –

26

Sólo en caso de que desee la representación binaria y todavía estás bebido de noches último partido:

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 no manejar endianness muy bien ...

Edit: Si no te importa sacrificar un poco de memoria para la velocidad, se puede utilizar a continuación para generar una matriz con pre-calculados los valores de cadena:

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("}"); 
} 
-3

Hay muchos ways.like

Int Value=2; 
var s=Convert.Tostring(Value); 
+0

El uso de mayúsculas de este código está desactivado, por lo que este código nunca se compilará. Además, esta solución ya se menciona en otras respuestas, como las publicadas 5 años antes de esta publicación. –

3

Ninguna de las respuestas se menciona que el método ToString() se puede aplicar a las expresiones enteros

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

incluso a literales enteros

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

Aunque literales enteros de este tipo son a menudo considerados como mal estilo de codificación (números mágicos) puede haber casos en los que esta característica es útil ...