স্ট্রিং ইন ইন রূপান্তর?


উত্তর:


741
string myString = myInt.ToString();

4
এটির সাথে আমার সমস্যাটি হ'ল আপনি ধরণের সুরক্ষা হারাবেন। আমার কিছু কিছু হতে পারে। এখানে কিছুই বলে না একটি পূর্ণসংখ্যা নিয়ে যান এবং এটিকে স্ট্রিংয়ে রূপান্তর করেন। myInt একটি অবজেক্ট হতে পারে এবং একটি বস্তুকে স্ট্রিংয়ে রূপান্তর করা যায় না। এটি সংকলন সময়ে জানা ছিল, তবে এটি রানটাইম ব্যতিক্রমও বাড়ায় না এটি কেবল খারাপ ডেটা মঞ্জুর করবে।
টিমোথি গঞ্জালেজ

3
@ টিমোথিগনজালেজ এটি একটি প্রান্তের কেস, যদি আপনি কল করেন।
EpicKip

35
@nfgallimore এটি একটি বৈধ প্রান্তের মামলা নয় এটি এমনকি এই পরিস্থিতিতে কোনও প্রান্তের মামলাও নয়। ওপি জানিয়েছে যে তার কোন প্রকার টাইপ আছে সে স্ট্রিংয়ে রূপান্তর করতে চেয়েছিল। যদি এটি কোনও int টাইপ হয়, তবে সাধারণ এবং সরল মানটি একটি int হয়। সংকলক এটি বীমা হয়। এমনকি কীভাবে আপনি সেই স্পর্শকটিতে চলে গেছেন তাও নিশ্চিত নয়। ওপি কোনও র্যান্ডম রেফারেন্সটি একটি পূর্ণসংখ্যা কিনা তা নিশ্চিত করে না এবং তারপরে স্ট্রিংয়ে রূপান্তর করতে পারে। সম্ভবত সেই ক্ষেত্রে আপনার একটি বক্তব্য আছে, তবে এটি ক্ষেত্রে নয়।
অ্যারোনম

1
এই সমাধানটি nullমানের জন্য ব্যতিক্রম ছুঁড়ে দেয় ।
মেহেদী দেহঘানি

18
এই উত্তরের মন্তব্যগুলি হাস্যকর।

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 = new StringBuilder().Append(i).ToString();

6
এছাড়াও আপনি এটি করতে পারেনstring count = "" + intCount;
ডায়ন দিরজা

2
এই সমস্ত সমাধান কি সমান দক্ষ? আমি কল্পনা করেছিলাম আই টোস্ট্রিং () ইনট এর কিছু অপ্রয়োজনীয় বক্সিং করে তবে সম্ভবত এটি যেভাবেই অনুকূলিত হয়েছে।
স্টিফেন হল্ট

43
.ToString()রূপান্তরটি করার সবচেয়ে কার্যকর উপায়। এখানে উপস্থাপিত অন্যান্য সমস্ত পদ্ধতি অবশেষে .ToString()যাইহোক কল করবে ।
জাভিয়ের পইনাস

6
আপনি ভেরিয়েবলটি পুনরায় ঘোষণা করতে পেরে আমি কিছুটা অস্থির বোধ করিs
থোকোশম্যান

1
@ জাভিয়ারপুইনাস যখন তারা "টোস্ট্রিং ()" বলতে পারেন - এটি আপনাকে সবচেয়ে কার্যকর বলে কোনটি পরিকল্পনা করছেন তা কিছুটা নির্ভর করে। string s = "xyz" + i;একটি নতুন "xyz" স্ট্রিং তৈরি করবে - আপনার পূর্ণসংখ্যযুক্ত নতুন স্ট্রিং তৈরি করবে; এবং তারপরে একটি তৃতীয় স্ট্রিং তৈরি করুন যাতে 2 টি সমাপ্ত হয়। string.Format("xyz{0}", i);অন্যদিকে, কেবল 2 টি স্ট্রিং তৈরি করতে সক্ষম - এটি তাদের ইনলাইনটিকে একত্র করে দিচ্ছে। স্ট্রিং দীর্ঘ হওয়ার সাথে সাথে এই কর্মক্ষমতা আরও লক্ষণীয় হয়ে ওঠে।
ইউ কেমনেকি

32

কেবলমাত্র যদি আপনি বাইনারি প্রতিনিধিত্ব চান এবং আপনি এখনও শেষ রাতের পার্টি থেকে মাতাল:

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


14

যে কোনও অবজেক্টের টোস্ট্রিং পদ্ধতিতে সেই অবজেক্টের একটি স্ট্রিং উপস্থাপনা ফিরে আসার কথা।

int var1 = 2;

string var2 = var1.ToString();

10

@ জাভিয়ের প্রতিক্রিয়ায় আরও, এখানে এমন একটি পৃষ্ঠা যা 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

9
string str = intVar.ToString();

কিছু পরিস্থিতিতে, আপনার ব্যবহার করতে হবে না ToString()

string str = "hi " + intVar;


4

উত্তরের কোনওটিতেই উল্লেখ করা হয়নি যে ToString()পদ্ধতিটি পূর্ণসংখ্যার এক্সপ্রেশনগুলিতে প্রয়োগ করা যেতে পারে

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

এমনকি পূর্ণসংখ্যার আক্ষরিক পর্যন্ত

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

যদিও এর মতো পূর্ণসংখ্যার অক্ষরগুলিকে প্রায়শই খারাপ কোডিং স্টাইল হিসাবে বিবেচনা করা হয় ( যাদু সংখ্যা ) এমন বৈশিষ্ট্য থাকতে পারে যেখানে এই বৈশিষ্ট্যটি কার্যকর ...


3
using System.ComponentModel;

TypeConverter converter = TypeDescriptor.GetConverter(typeof(int));
string s = (string)converter.ConvertTo(i, typeof(string));

এই উত্তরটি নিম্ন মানের পর্যালোচনা সারিতে পরিণত হয়েছে, সম্ভবত আপনি কোডটি ব্যাখ্যা না করায়। আপনি যদি এটি ব্যাখ্যা করেন (আপনার উত্তরে), আপনি আরও বেশি কিছু পাওয়ার সম্ভাবনা পাবেন the এবং প্রশ্নকারী আসলে কিছু শিখেন!
দ্য হাট

5
@ দ্য গুয়ুইথথহ্যাট আপনি লক্ষ্য করবেন যে এখানে উত্তরগুলির মধ্যে কোনওটিরই কোডের কোনও ব্যাখ্যা নেই, বিশেষত এই উচ্চ-উত্তরের উত্তরে সমস্ত কোডের নমুনা , কারণ এগুলি স্পষ্টতই বোঝা যাচ্ছে যে তারা সবাই কী করবে: একটি স্ট্রিতে একটি প্রান্তকে রূপান্তরিত করা। সত্যিকার অর্থে আমাদের গৃহীত উত্তরের বাইরে কিছু দরকার নেই i.ToString- বাকিগুলি কেবলমাত্র সম্পূর্ণতা এবং মজাদার জন্যেই।
nmclean

2
অন্যান্য উত্তরের ব্যাখ্যার অভাবের অর্থ এই নয় যে সমস্ত উত্তরের ব্যাখ্যাটির অভাব হওয়া উচিত। আমি কেবলমাত্র এই নির্দিষ্ট উত্তরে মন্তব্য করার একমাত্র কারণ হ'ল আমি এটি নিম্ন মানের পর্যালোচনা সারিতে দেখেছি।
দ্য হাট সহ

@ দ্য গুয়ুইথহ্যাট আমি প্রস্তাব দিইনি যে আমার উত্তরটি অসম্পূর্ণ হতে পারে কারণ অন্যরা হ'ল; আমি বলছি যে এগুলির কেউই নেই (এটি সহ) কারণ এই প্রশ্নের প্রসঙ্গে উদ্দেশ্যটি স্পষ্ট।
nmclean

2
@reggaeguitar এটি বেশিরভাগই একটি কৌতুকের উত্তর, আমরা উদ্দেশ্যমূলকভাবে সর্বাধিক প্রাথমিক কাজগুলির একটি করার আরও বেশি বেশি অস্পষ্ট উপায় যুক্ত করেছিলাম। তবে আপনার প্রশ্নে এই পদ্ধতির সুবিধাটি হ'ল যদি আপনি আগে থেকে প্রকারগুলি না জানতেন - পরিবর্তে typeof(int)এবং typeof(string)আপনার কাছে টাইপ ভেরিয়েবল থাকতে পারে এবং এটি যখনই উপস্থিত থাকবে তখন উপযুক্ত রূপান্তরকারী খুঁজে পেতে এবং ব্যবহার করতে পারে।
nmclean

1
string s = "" + 2;

এবং আপনি যেমন ভাল জিনিস করতে পারেন:

string s = 2 + 2 + "you" 

ফলাফলটি হবে:

"আপনি 4"

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.