Как я могу преобразовать int
тип данных в string
тип данных в C #?
Как я могу преобразовать int
тип данных в string
тип данных в C #?
Ответы:
string myString = myInt.ToString();
null
значений.
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();
string count = "" + intCount;
.ToString()
это самый эффективный способ сделать преобразование. Все остальные методы, представленные здесь, в конечном итоге будут вызываться .ToString()
.
s
string s = "xyz" + i;
создаст новую строку "xyz" - создайте новую строку, содержащую ваше целое число; а затем создайте 3-ю строку, содержащую 2 конкатенацию. string.Format("xyz{0}", i);
с другой стороны, способен генерировать только 2 строки - так как он объединяет их в строку. Это исполнение становится более заметным, поскольку строки становятся длиннее.
На всякий случай, если вам нужно двоичное представление, и вы все еще пьяны с вечеринки прошлых ночей:
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();
}
Примечание: кое-что о не очень хорошей обработке порядка байтов ...
Редактировать: Если вы не возражаете пожертвовать небольшим количеством памяти для скорости, вы можете использовать ниже для генерации массива с предварительно вычисленными значениями строки:
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("}");
}
int num = 10;
string str = Convert.ToString(num);
Предполагается, что метод ToString любого объекта возвращает строковое представление этого объекта.
int var1 = 2;
string var2 = var1.ToString();
В дополнение к ответу @ Xavier, вот страница, которая делает сравнение скорости между несколькими различными способами сделать преобразование от 100 итераций до 21 474 836 итераций.
Кажется, в значительной степени связь между:
int someInt = 0;
someInt.ToString(); //this was fastest half the time
//and
Convert.ToString(someInt); //this was the fastest the other half the time
string str = intVar.ToString();
В некоторых условиях вы не должны использовать ToString()
string str = "hi " + intVar;
или:
string s = Convert.ToString(num);
Ни в одном из ответов не упоминалось, что ToString()
метод можно применять к целочисленным выражениям
Debug.Assert((1000*1000).ToString()=="1000000");
даже целочисленные литералы
Debug.Assert(256.ToString("X")=="100");
Хотя целочисленные литералы, подобные этому, часто считают плохим стилем кодирования ( магические числа ), могут быть случаи, когда эта функция полезна ...
using System.ComponentModel;
TypeConverter converter = TypeDescriptor.GetConverter(typeof(int));
string s = (string)converter.ConvertTo(i, typeof(string));
i.ToString
все остальное здесь только ради полноты и веселья.
typeof(int)
и typeof(string)
вы могли бы иметь переменные типа, и он мог бы найти и использовать соответствующий преобразователь, когда он существует.