在C#中"追加"整数的好方法?

use*_*076 7 c# integer

我有两个整数,例如.15和6,我想得到156.我做了什么:

int i = 15;
int j = 6;
Convert.ToInt32(i.ToString() + j.ToString());
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法呢?

更新: 谢谢你所有的好答案.我运行快速秒表测试以查看性能影响:这是在我的机器上测试的代码:

static void Main()
    {
        const int LOOP = 10000000;
        int a = 16;
        int b = 5;
        int result = 0;
        Stopwatch sw = Stopwatch.StartNew();
        for (int i = 0; i < LOOP; i++)
        {
            result = AppendIntegers3(a, b);
        }
        sw.Stop();
        Console.WriteLine("{0}ms, LastResult({1})", sw.ElapsedMilliseconds,result);
    }
Run Code Online (Sandbox Code Playgroud)

这是时间:

My original attempt: ~3700ms 
Guffa 1st answer: ~105ms 
Guffa 2nd answer: ~110ms 
Pent Ploompuu answer: ~990ms 
shenhengbin answer: ~3830ms 
dasblinkenlight answer: ~3800ms
Chris Gessler answer: ~105ms
Run Code Online (Sandbox Code Playgroud)

Guffa提供了一个非常好的智能解决方案,Chris Gessler为该解决方案提供了一个非常好的扩展方法.

Guf*_*ffa 16

你可以用数字来做.无需字符串转换:

int i=15;
int j=6;

int c = 1;
while (c <= j) {
  i *= 10;
  c *= 10;
}
int result = i + j;
Run Code Online (Sandbox Code Playgroud)

要么:

int c = 1;
while (c <= j) c *= 10;
int result = i * c + j;
Run Code Online (Sandbox Code Playgroud)

  • @Xander它避免了转换步骤中包含在BCL中的大部分相同的数学运算(以及额外的开销和中间字符串); 我希望它能在任何一天赢得微观.当然,微观是微观的......我会接受这个代码*仅仅是在一个命名函数(或非常特殊的基准性能案例)之后. (3认同)