Mi problema con esto es que pierdes la seguridad del 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 se puede convertir en una cadena. Eso se sabe en tiempo de compilación, pero ni siquiera generaría una excepción de tiempo de ejecución, solo permitiría datos incorrectos.
Timothy Gonzalez
3
@TimothyGonzalez Ese es un caso extremo, si llamas a .ToString () es generalmente porque necesitas que sea una cadena y puede ser una cadena.
EpicKip
35
@nfgallimore No es un caso límite válido, ni siquiera es un caso límite en esta situación. El OP declaró que tenía un tipo int que quería convertir en una cadena. Si es un tipo int, entonces, simple y llanamente, el valor es int. El compilador asegurará que ese sea el caso. Ni siquiera estoy seguro de cómo te fue en esa tangente. El OP no preguntó cómo asegurarse de que una referencia aleatoria fuera un número entero y luego convertirla en una cadena. Quizás en ese caso tengas un punto, pero ese no es el caso.
AaronM
1
Esta solución arroja una excepción para los nullvalores.
Mehdi Dehghani
18
Los comentarios sobre esta respuesta son 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 =newStringBuilder().Append(i).ToString();
también puedes hacer estostring count = "" + intCount;
Dion Dirza
2
¿Son todas estas soluciones igualmente eficientes? Me imagino que i.ToString () hace un boxeo innecesario de int, pero tal vez eso está optimizado de todos modos.
Stephen Holt el
43
.ToString()es la forma más eficiente de hacer la conversión. Todos los otros métodos presentados aquí eventualmente llamarán de .ToString()todos modos.
Xavier Poinas
66
Me siento un poco inquieto por el hecho de que sigas volviendo a declarar la variables
thecoshman
1
@XavierPoinas Si bien pueden llamar "ToString ()", de alguna manera depende de lo que planeas hacer con respecto a cuál es el más eficiente. string s = "xyz" + i;creará una nueva cadena "xyz": cree la nueva cadena que contiene su número entero; y luego crea una tercera cadena que contiene los 2 concatenados. string.Format("xyz{0}", i);por otro lado, es capaz de producir solo 2 cadenas, ya que las concatena en línea. Este rendimiento se vuelve más notable a medida que las cuerdas se alargan.
UKMonkey
32
En caso de que quieras la representación binaria y sigas borracho de la fiesta de anoche:
privatestaticstringByteToString(intvalue){StringBuilder builder =newStringBuilder(sizeof(byte)*8);BitArray[] bitArrays =BitConverter.GetBytes(value).Reverse().Select(b =>newBitArray(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 muy bien el endianness ...
Editar: si no le importa sacrificar un poco de memoria por la velocidad, puede usar a continuación para generar una matriz con valores de cadena calculados previamente:
staticvoidOutputIntegerStringRepresentations(){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("}");}
Ninguna de las respuestas mencionó que el ToString()método puede aplicarse a expresiones enteras
Debug.Assert((1000*1000).ToString()=="1000000");
incluso a literales enteros
Debug.Assert(256.ToString("X")=="100");
Aunque los literales enteros como este a menudo se consideran un mal estilo de codificación ( números mágicos ), puede haber casos en los que esta característica sea útil ...
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 a favor, ¡y el interlocutor realmente aprende algo!
The Guy with The Hat
55
@TheGuywithTheHat Notarás que ninguna de las respuestas aquí tiene una explicación del código, particularmente todos los ejemplos de código en esta respuesta altamente votada , 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í en aras de la integridad y la diversión.
nmclean
2
La falta de una explicación en otras respuestas no significa que todas las respuestas deberían carecer de explicación. La única razón por la que comenté solo esta respuesta en particular es porque la vi en la cola de revisión de baja calidad.
The Guy with The Hat
@TheGuywithTheHat No estaba sugiriendo que mi respuesta puede estar incompleta porque otros lo están; Estoy diciendo que ninguno de ellos lo está (incluido este) porque la intención es obvia en el contexto de esta pregunta.
nmclean
2
@reggaeguitar Es principalmente una respuesta de broma, agregamos intencionalmente formas cada vez más oscuras de hacer una de las tareas más básicas. Pero para su pregunta, la ventaja de este método sería si no conociera los tipos de antemano, en lugar de typeof(int)y typeof(string)podría tener variables de Tipo y buscaría y usaría un convertidor apropiado siempre que exista.
null
valores.fuente
string count = "" + intCount;
.ToString()
es la forma más eficiente de hacer la conversión. Todos los otros métodos presentados aquí eventualmente llamarán de.ToString()
todos modos.s
string s = "xyz" + i;
creará una nueva cadena "xyz": cree la nueva cadena que contiene su número entero; y luego crea una tercera cadena que contiene los 2 concatenados.string.Format("xyz{0}", i);
por otro lado, es capaz de producir solo 2 cadenas, ya que las concatena en línea. Este rendimiento se vuelve más notable a medida que las cuerdas se alargan.En caso de que quieras la representación binaria y sigas borracho de la fiesta de anoche:
Nota: Algo sobre no manejar muy bien el endianness ...
Editar: si no le importa sacrificar un poco de memoria por la velocidad, puede usar a continuación para generar una matriz con valores de cadena calculados previamente:
fuente
fuente
Se supone que el método ToString de cualquier objeto devuelve una representación de cadena de ese objeto.
fuente
Más adelante con la respuesta de @ Xavier, aquí hay una página que acelera las comparaciones entre varias formas diferentes de hacer la conversión de 100 iteraciones a 21,474,836 iteraciones.
Parece más o menos un empate entre:
fuente
En algunas condiciones, no tiene que usar
ToString()
fuente
o:
fuente
Ninguna de las respuestas mencionó que el
ToString()
método puede aplicarse a expresiones enterasincluso a literales enteros
Aunque los literales enteros como este a menudo se consideran un mal estilo de codificación ( números mágicos ), puede haber casos en los que esta característica sea útil ...
fuente
fuente
i.ToString
: el resto solo está aquí en aras de la integridad y la diversión.typeof(int)
ytypeof(string)
podría tener variables de Tipo y buscaría y usaría un convertidor apropiado siempre que exista.y puedes hacer cosas bonitas como:
El resultado será:
fuente