将int转换为字符串?

The*_*ady 467 c# string int

如何在C#中将int数据类型转换为string数据类型?

Ant*_*ram 706

string myString = myInt.ToString();
Run Code Online (Sandbox Code Playgroud)

  • @nfgallimore这不是一个有效的边缘情况,在这种情况下甚至不是边缘情况.OP表示他有一个他希望转换为字符串的int类型.如果它是int类型,那么简单和简单的值是int.编译器将确保这种情况.甚至不确定你是如何走出那条切线的.OP没有询问如何确保随机引用是一个整数然后将其转换为字符串.也许在那种情况下你有一个观点,但事实并非如此. (31认同)
  • 关于这个答案的评论是荒谬的。 (12认同)
  • 我的问题是你失去了类型安全.myInt可能是任何东西.这里没有说采取整数并将其转换为字符串.myInt可能是一个对象,一个对象无法转换为字符串.这在编译时是已知的,但它甚至不会引发运行时异常,它只会允许坏数据. (4认同)
  • @TimothyGonzalez这是一个边缘情况,如果你调用.ToString()通常是因为你需要它是一个字符串,它可以是一个字符串. (3认同)
  • @MehdiDehghani,问题中的数据类型“int”不会为空。但为了论证,数据类型“int?”*可能*为 null,但这会返回一个空字符串,而不是抛出异常。但是,如果数据类型不是“int”,而是装箱到“object”的“int?”,那么是的,如果为空,它将抛出异常。 (2认同)

Xav*_*nas 507

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();
Run Code Online (Sandbox Code Playgroud)

  • `.ToString()`是进行转换的最有效方法.这里介绍的所有其他方法最终都会调用`.ToString()`. (41认同)
  • 你也可以这样做`string count =""+ intCount;` (6认同)
  • 你不断重新声明变量`s`的事实让我感到有些不安 (5认同)
  • 所有这些解决方案同样有效吗?我想i.ToString()会对int进行一些不必要的装箱,但也许无论如何都会优化. (2认同)

Ono*_*ots 31

万一你想要二进制表示,你仍然从昨晚派对喝醉:

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();
}
Run Code Online (Sandbox Code Playgroud)

注意:关于不能很好地处理字节序的东西......

编辑:如果您不介意为速度牺牲一点内存,可以使用下面的代码生成具有预先计算的字符串值的数组:

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("}");
}
Run Code Online (Sandbox Code Playgroud)


Pol*_*ris 25

int num = 10;
string str = Convert.ToString(num);
Run Code Online (Sandbox Code Playgroud)


Voo*_*ild 13

任何对象的ToString方法都应该返回该对象的字符串表示.

int var1 = 2;

string var2 = var1.ToString();
Run Code Online (Sandbox Code Playgroud)


小智 10

进一步研究@ 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
Run Code Online (Sandbox Code Playgroud)


Meh*_*nce 9

string str = intVar.ToString();
Run Code Online (Sandbox Code Playgroud)

在某些情况下,你不必使用 ToString()

string str = "hi " + intVar;
Run Code Online (Sandbox Code Playgroud)


Jes*_*cer 8

要么:

string s = Convert.ToString(num);
Run Code Online (Sandbox Code Playgroud)