比较字符串连接

Comparing String concatenation

我想知道连接两个字符串的最佳方法是什么。 来自 C# 背景,我习惯了 String.Format(...)StringBuilder,当然还有 +.

在 Axapta (4.0) 中,我现在看到:

str str1, str2, str3;
;

str1 = 'Hello';
str2 = 'world';

str3 = strfmt('%1 %2',str1,str2);
info(str3);

str3 = str1+' '+str2;
info(str3);

我的问题是,什么是最佳实践,为什么? 并使其 不是 基于意见:是否存在速度差异?

简单的 + 运算符速度最快,因为您可以通过一些循环和大量迭代快速对自己进行基准测试。请参阅下面的快速示例,它(在我的机器上)+ 运算符需要 ~ 7 秒,strfmt 需要 ~ 10 秒。正如 Guido Preite 已经指出的那样,为了最好的可读性而编写它,但通常在 AX 中 strfmt 用于构建面向用户的字符串(例如通过信息日志)。

static void StrConcatPerf(Args _args)
{
    int i;
    int startTime;
    int endTime;

    str concat2StringsWithOperator(str _lhs, str _rhs)
    {
        ;

        return _lhs + _rhs;
    }

    str concat2StringsWithStrFmt(str _lhs, str _rhs)
    {
        ;

        return strfmt('%1%2', _lhs, _rhs);
    }
    ;


    startTime = timenow();
    for (i = 0; i < 2000000; ++i)
    {
        //concat2StringsWithStrFmt('lhs_string', 'rhs_string');
        //concat2StringsWithOperator('lhs_string', 'rhs_string');
    }
    endTime = timenow();

    info(strfmt("Processing time was %1 secs", endTime - startTime));
}