2010-06-21 7 views

Répondre

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

Mon problème c'est que vous perdez la sécurité de type. myInt pourrait être n'importe quoi. Rien ici ne dit de prendre un entier et de le convertir en chaîne. myInt peut être un objet et un objet ne peut pas être converti en chaîne. Cela est connu au moment de la compilation, mais cela n'augmenterait même pas une exception d'exécution, mais autoriserait simplement de mauvaises données. –

+0

@TimothyGonzalez C'est un cas limite, si vous appelez .ToString() c'est généralement parce que vous avez besoin d'une chaîne de caractères et cela peut être une chaîne. – EpicKip

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

La méthode ToString de tout objet est supposée retourner une représentation de chaîne de cet objet.

int var1 = 2; 

string var2 = var1.ToString(); 
7

ou:

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

variété est le piment de la vie. –

+17

@variety, j'espère que vous n'êtes pas marié avec ces opinions: p – VoodooChild

+6

aussi vous pouvez le faire 'string count =" "+ intCount;' –

8
string str = intVar.ToString(); 

Dans certaines conditions, yo ne doivent pas utiliser ToString()

string str = "hi " + intVar; 
7

plus sur @ réponse de Xavier, here's a page that does speed comparisons entre plusieurs différentes façons de faire conversion de 100 itérations jusqu'à 21 474 836 itérations.

Il semble à peu près un lien 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

Cette réponse est apparue dans la file d'attente de révision de mauvaise qualité, vraisemblablement parce que vous n'avez pas expliqué le code. Si vous l'expliquez (dans votre réponse), vous êtes beaucoup plus susceptible d'obtenir plus de votes upvotes, et le questionneur apprend réellement quelque chose! –

+4

@TheGuywithTheHat Vous remarquerez qu'aucune des réponses ici n'a une explication du code, en particulier tous les exemples de code dans [cette réponse hautement mise à jour] (http://stackoverflow.com/a/3081940/933416), parce que c'est évident ce qu'ils doivent tous faire: convertir un int en une chaîne. Honnêtement, nous n'avons besoin de rien au-delà de la réponse acceptée - 'i.ToString' - le reste ne sont là que par souci d'exhaustivité et de plaisir. – nmclean

+0

Un manque d'explication dans les autres réponses ne signifie pas que toutes les réponses devraient manquer d'explication. La seule raison pour laquelle j'ai commenté cette réponse particulière est que je l'ai vu dans la file d'attente de révision de qualité médiocre. –

26

Juste au cas où vous voulez que la représentation binaire et vous êtes toujours en état d'ébriété de dernière nuits partie:

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

Note: Quelque chose à propos de ne pas gérer l'endianness très bien ...

Editer: Si vous ne me dérange pas sacrifier un peu de mémoire pour la vitesse, vous pouvez utiliser ci-dessous pour générer un tableau avec des valeurs de chaîne pré-calculées:

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

Il y a beaucoup ways.like

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

La capitalisation de ce code est désactivée, donc ce code ne compilera jamais. Aussi, cette solution est déjà mentionnée dans d'autres réponses, comme celles postées 5 ans avant ce post. –

3

Aucune des réponses a mentionné que la méthode ToString() peut être appliquée à expressions entières

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

même littéraux entiers

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

Bien que des entiers comme celui-ci sont souvent considérés comme mauvais style de codage (nombres magiques) il peut y avoir des cas où cette fonction est utile ...