0

ネイティブの変換関数を使用せずに int を文字列に変換する最も効果的なコードは何ですか?

 public static void Main(string[] args)
    {
        string y = Convert(990);
        Console.WriteLine(y);
        Console.ReadLine(); 
    }


    public static string Convert(int x)
    {

         char[] Str = new char[20];
         int i = 0;
         while (x != 0)
         {
             Str[i++] = x % 10 + '0';
             x = x / 10;
         }

         return Str.ToString();// How do I handle this without the native function?
    }

上記は機能していないようです。お知らせ下さい。

4

3 に答える 3

1

String コンストラクターまたは .ToString() 呼び出しを使用しないソリューションを次に示します。これは負の数を処理します。私の好みには少し「賢すぎる」ですが、とにかくアカデミックな練習です...

void Main()
{
    Console.WriteLine(Convert(-5432));
}

String Convert(int i)
{
    return String.Join("",Digits(i).Reverse());
}

IEnumerable<char> Digits(int i)
{
    bool neg = false;
    if(i==0) {yield return '0'; yield break;}
    if(i<0) { i = -i; neg = true;}
    while (i!=0)
    {
        char digit = (char)(i % 10 + '0');
        i = i / 10;
        yield return digit;
    }
    if(neg) yield return '-';

    yield break;
}
于 2013-07-04T21:54:05.223 に答える