哪个更有效,附加一个字符的字符串或字符?

时间:2017-01-31 13:37:28

标签: c#

在表现方面,做法有何不同: $scope.checkbox = function(isselected) { if (vm.target[isselected]) { $scope.btnClass = "disabled"; } else { $scope.btnClass = ""; } }; vs stringX + 'y'

如果有差异,为什么会有?

我的问题主要与C#有关。

1 个答案:

答案 0 :(得分:12)

两者之间绝对没有区别。例如,如果您有以下两个功能:

static string Method1()
{
    var stringX = "abc";
    var res = stringX + 'y';
    return res;
}

static string Method2()
{
    var stringX = "abc";
    var res = stringX + "y";
    return res;
}

这是C#编译器发出的相应IL(内置在Release模式下):

.method private hidebysig static string Method1 () cil managed 
{
    IL_0000: ldstr "abc"
    IL_0005: ldstr "y"
    IL_000a: call string [mscorlib]System.String::Concat(string,  string)
    IL_000f: ret
}

.method private hidebysig static string Method2 () cil managed 
{
    IL_0000: ldstr "abc"
    IL_0005: ldstr "y"
    IL_000a: call string [mscorlib]System.String::Concat(string,  string)
    IL_000f: ret
}

编译器足够智能,可以为极不寻常的stringX + 'y'构造发出适当的IL。