Làm cách nào tôi có thể chuyển đổi một int
kiểu dữ liệu thành string
kiểu dữ liệu trong C #?
Làm cách nào tôi có thể chuyển đổi một int
kiểu dữ liệu thành string
kiểu dữ liệu trong C #?
Câu trả lời:
string myString = myInt.ToString();
null
các giá trị.
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()
là cách hiệu quả nhất để thực hiện chuyển đổi. Tất cả các phương pháp khác được trình bày ở đây cuối cùng sẽ gọi .ToString()
.
s
string s = "xyz" + i;
sẽ tạo một chuỗi "xyz" mới - tạo chuỗi mới chứa số nguyên của bạn; và sau đó tạo một chuỗi thứ 3 chứa 2 liên kết. string.Format("xyz{0}", i);
mặt khác, có thể tạo ra chỉ 2 chuỗi - vì nó che giấu chúng theo dòng. Hiệu suất này trở nên đáng chú ý hơn khi các chuỗi dài hơn.
Chỉ trong trường hợp bạn muốn đại diện nhị phân và bạn vẫn say từ bữa tiệc đêm qua:
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();
}
Lưu ý: Một cái gì đó về việc không xử lý endianness rất độc đáo ...
Chỉnh sửa: Nếu bạn không hy sinh một chút bộ nhớ cho tốc độ, bạn có thể sử dụng bên dưới để tạo một mảng với các giá trị chuỗi được tính toán trước:
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("}");
}
Phương thức ToString của bất kỳ đối tượng nào được cho là trả về một chuỗi đại diện của đối tượng đó.
int var1 = 2;
string var2 = var1.ToString();
Hơn nữa về phản hồi của @ Xavier, đây là một trang so sánh tốc độ giữa một số cách khác nhau để thực hiện chuyển đổi từ 100 lần lặp lên đến 21.474.836 lần lặp.
Có vẻ như khá nhiều ràng buộc giữa:
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();
Trong một số điều kiện, yo không phải sử dụng ToString()
string str = "hi " + intVar;
hoặc là:
string s = Convert.ToString(num);
Không có câu trả lời nào đề cập rằng ToString()
phương thức này có thể được áp dụng cho các biểu thức nguyên
Debug.Assert((1000*1000).ToString()=="1000000");
thậm chí đến số nguyên
Debug.Assert(256.ToString("X")=="100");
Mặc dù những chữ nguyên như thế này thường được coi là kiểu mã hóa xấu ( số ma thuật ), có thể có trường hợp tính năng này hữu ích ...
using System.ComponentModel;
TypeConverter converter = TypeDescriptor.GetConverter(typeof(int));
string s = (string)converter.ConvertTo(i, typeof(string));
i.ToString
- phần còn lại chỉ ở đây vì mục đích hoàn chỉnh và vui vẻ.
typeof(int)
và typeof(string)
bạn có thể có các biến Loại và nó sẽ tìm và sử dụng một trình chuyển đổi phù hợp bất cứ khi nào tồn tại.