Masalah saya dengan ini adalah Anda kehilangan keamanan jenis. myInt bisa berupa apa saja. Tidak ada yang mengatakan ambil integer dan mengubahnya menjadi string. myInt dapat berupa objek dan objek tidak dapat dikonversi ke string. Itu diketahui pada waktu kompilasi, tetapi bahkan tidak akan meningkatkan pengecualian runtime, itu hanya akan memungkinkan data yang buruk.
Timothy Gonzalez
3
@TimothyGonzalez Itu kasus tepi, jika Anda memanggil .ToString () biasanya karena Anda membutuhkannya menjadi string dan itu bisa menjadi string.
EpicKip
35
@ nfgallimore Ini bukan kasus tepi yang valid bahkan bukan kasus tepi dalam situasi ini. OP menyatakan ia memiliki tipe int yang ingin dikonversi menjadi string. Jika ini adalah tipe int, maka nilainya polos dan sederhana. Compiler akan memastikan hal itu terjadi. Bahkan tidak yakin bagaimana Anda menggunakan garis singgung itu. OP tidak bertanya bagaimana memastikan referensi acak adalah bilangan bulat dan kemudian mengubahnya menjadi string. Mungkin dalam hal ini Anda ada benarnya, tetapi bukan itu masalahnya.
AaronM
1
Solusi ini membuang pengecualian untuk nullnilai.
Mehdi Dehghani
18
Komentar tentang jawaban ini konyol.
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();
Anda juga dapat melakukan inistring count = "" + intCount;
Dion Dirza
2
Apakah semua solusi ini sama efisiennya? Saya membayangkan i.ToString () melakukan beberapa tinju int yang tidak perlu, tapi mungkin itu yang dioptimalkan.
Stephen Holt
43
.ToString()adalah cara paling efisien untuk melakukan konversi. Semua metode lain yang disajikan di sini pada akhirnya akan .ToString()tetap menelepon .
Xavier Poinas
6
Saya merasa sedikit tidak tenang dengan fakta bahwa Anda terus mendeklarasikan ulang variabels
thecoshman
1
@XavierPoinas Meskipun mereka dapat memanggil "ToString ()" - itu agak tergantung pada apa yang Anda rencanakan dengan yang paling efisien. string s = "xyz" + i;akan membuat string "xyz" baru - membuat string baru yang berisi bilangan bulat Anda; dan kemudian membuat string ke-3 yang berisi 2 concated. string.Format("xyz{0}", i);di sisi lain, hanya dapat menghasilkan 2 string - karena itu merangkai mereka inline. Performa ini menjadi lebih nyata karena senarnya semakin panjang.
UKMonkey
32
Jika Anda menginginkan representasi biner dan Anda masih mabuk dari pesta semalam:
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();}
Catatan: Sesuatu tentang tidak menangani endianness dengan sangat baik ...
Sunting: Jika Anda tidak keberatan mengorbankan sedikit memori untuk kecepatan, Anda dapat menggunakan di bawah ini untuk menghasilkan array dengan nilai string yang sudah dihitung:
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("}");}
Tidak ada jawaban yang menyebutkan bahwa ToString()metode ini dapat diterapkan ke ekspresi integer
Debug.Assert((1000*1000).ToString()=="1000000");
bahkan ke integer literal
Debug.Assert(256.ToString("X")=="100");
Meskipun bilangan bulat integer seperti ini sering dianggap sebagai gaya pengkodean yang buruk ( angka ajaib ) mungkin ada kasus di mana fitur ini berguna ...
Jawaban ini muncul dalam antrian ulasan berkualitas rendah, mungkin karena Anda tidak menjelaskan kode. Jika Anda benar-benar menjelaskannya (dalam jawaban Anda), Anda akan jauh lebih mungkin mendapatkan lebih banyak suara — dan si penanya benar-benar mempelajari sesuatu!
The Guy with The Hat
5
@TheGuywithTheHat Anda akan melihat bahwa tidak ada jawaban di sini yang memiliki penjelasan tentang kode, terutama semua sampel kode dalam jawaban yang sangat tervotifikasi ini , karena jelas apa yang harus mereka lakukan: mengonversi int ke string. Sejujurnya kita tidak membutuhkan apa pun di luar jawaban yang diterima - i.ToString- sisanya hanya ada di sini demi kelengkapan dan kesenangan.
nmclean
2
Kurangnya penjelasan dalam jawaban lain tidak berarti bahwa semua jawaban harus kurang penjelasan. Satu-satunya alasan saya mengomentari jawaban khusus ini adalah karena saya melihatnya di antrian ulasan berkualitas rendah.
The Guy with The Hat
@TheGuywithTheHat Saya tidak menyarankan bahwa jawaban saya bisa tidak lengkap karena yang lain; Saya mengatakan tidak satupun dari mereka (termasuk yang ini) karena niatnya jelas dalam konteks pertanyaan ini.
nmclean
2
@reggaeguitar Ini sebagian besar jawaban lelucon, kami sengaja menambahkan semakin banyak cara yang tidak jelas dalam melakukan salah satu tugas paling dasar. Tetapi untuk pertanyaan Anda, keuntungan dari metode ini adalah jika Anda tidak mengetahui tipe-tipe sebelumnya - daripada typeof(int)dan typeof(string)Anda bisa memiliki variabel Type dan itu akan menemukan dan menggunakan konverter yang sesuai setiap kali ada.
null
nilai.sumber
string count = "" + intCount;
.ToString()
adalah cara paling efisien untuk melakukan konversi. Semua metode lain yang disajikan di sini pada akhirnya akan.ToString()
tetap menelepon .s
string s = "xyz" + i;
akan membuat string "xyz" baru - membuat string baru yang berisi bilangan bulat Anda; dan kemudian membuat string ke-3 yang berisi 2 concated.string.Format("xyz{0}", i);
di sisi lain, hanya dapat menghasilkan 2 string - karena itu merangkai mereka inline. Performa ini menjadi lebih nyata karena senarnya semakin panjang.Jika Anda menginginkan representasi biner dan Anda masih mabuk dari pesta semalam:
Catatan: Sesuatu tentang tidak menangani endianness dengan sangat baik ...
Sunting: Jika Anda tidak keberatan mengorbankan sedikit memori untuk kecepatan, Anda dapat menggunakan di bawah ini untuk menghasilkan array dengan nilai string yang sudah dihitung:
sumber
sumber
Metode ToString dari objek apa pun seharusnya mengembalikan representasi string dari objek itu.
sumber
Lebih jauh ke tanggapan @ Xavier, inilah halaman yang melakukan perbandingan kecepatan antara beberapa cara berbeda untuk melakukan konversi dari 100 iterasi hingga 21.474.836 iterasi.
Tampaknya cukup banyak ikatan antara:
sumber
Dalam beberapa kondisi, Anda tidak harus menggunakan
ToString()
sumber
atau:
sumber
Tidak ada jawaban yang menyebutkan bahwa
ToString()
metode ini dapat diterapkan ke ekspresi integerbahkan ke integer literal
Meskipun bilangan bulat integer seperti ini sering dianggap sebagai gaya pengkodean yang buruk ( angka ajaib ) mungkin ada kasus di mana fitur ini berguna ...
sumber
sumber
i.ToString
- sisanya hanya ada di sini demi kelengkapan dan kesenangan.typeof(int)
dantypeof(string)
Anda bisa memiliki variabel Type dan itu akan menemukan dan menggunakan konverter yang sesuai setiap kali ada.dan Anda dapat melakukan hal-hal baik seperti:
Hasilnya adalah:
sumber