A+=B和A=A+B真的有区别吗?

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/23 07:36:45
A+=B和A=A+B真的有区别吗?A+=B和A=A+B真的有区别吗?A+=B和A=A+B真的有区别吗?建议使用+=、-=等简化操作符例如原有表达式A=A+B改为A+=B这样不仅减少了敲入代码的数量,而

A+=B和A=A+B真的有区别吗?
A+=B和A=A+B真的有区别吗?

A+=B和A=A+B真的有区别吗?
建议使用+=、-= 等简化操作符
例如原有表达式 A=A+B改为A+=B
这样不仅减少了敲入代码的数量,而且由于变量A只出现一次,在运行时也提高了系统的性能.
确实这样的操作能减少输入,但是对于是否真能提高性能,以及以什么方式来提高性能(是优化了代码还是节省了空间等),确实不太知道,带着好奇心,自己动手试试了.首先写了两个测试方法:staticvoidtest1(){stringA=string A;stringB=string B;A+=B;}staticvoidtest2(){stringA=string A;stringB=string B;A=A+B;}编译后用ildasm查看两者的IL,可以看出,两个方法的IL是一致的:
.maxstack2
.localsinit([0]stringA,[1]stringB)IL_0000:nopIL_0001:ldstrstring AIL_0006:stloc.0
IL_0007:ldstrstring BIL_000c:stloc.1
IL_000d:ldloc.0
IL_000e:ldloc.1
IL_000f:callstring[mscorlib]System.String::Concat(string,
string)IL_0014:stloc.0
IL_0015:ret既然IL都是完全一样的,想必用reflector反编译后的代码也是一样的喽.
这里分别按优化级别来查看://优化级别为NONEprivatestaticvoidtest1()//或者test2{stringA;stringB;A=string A;B=string B;A=A+B;return;}//优化级别为.NET 3.5private static void test1()()//或者test2{stringA=string A;stringB=string B;A=A+B;}(这里看出的代码不同是CLR平台对于我所写的代码的优化,而不是关于我们讨论的+=是否优化,别混淆)
由此看来,无论从哪个角度来看,所谓的提高性能是子虚乌有的,仅仅是.NET提供的一个语法糖,简化操作,并无特别的处理.
确实有点小题大做,但至少可以说明在学习过程中,不仅需要多看文章,同时也要能独立的思考,能够动手去验证一个别人的观点也是一种好的习惯.

A+=B和A=A+B真的有区别吗? A+=B和A=A+B真的有区别吗? B包含A和B真包含A有什么区别 子集和真子集的区别A={1,2,3} B={1,2,3,4}请问A是B的子集还是真子集呢?A={x丨x≥2} B={2}请问B是A的子集还是真子集呢?A中的元素B中都有,A是B的子集。B中有的元素(如:4)A中没有,那A又可 A包含于B,但是A不是B的真子集,就是说A=B吗? B⊆A可以B=A吗?为什么?如果是真子集的话就不可以是吧?子集和真子集的区别就是B⊆A可以B=A而B是A的真子集就不可以对吗? 包含和真包含的区别A={1} B={-1,1}问A和B的关系.!那到底是 A包含于B 还是 A真包含于B啊?! 我觉得好象都可以啊?2个有什么区别啊? 子集和真子集有什么区别?若A={1,2,3},B={1,2,3}那么A是B的子集,B也是A的子集?而且两集合相等?若A={1,2},B={1,2,3},那么A是B的子集?还是真子集? 若A=B ,A是不是B的真子集 A和B的区别? 集合A并集合B等于B,则A是B的子集,还是真子集?集合A并集合B等于B,则A是B的子集,还是真子集. 如果是子集,是否有A与B相等的情况. 那,A交B呢?A交B=B B与A能相等吗? {急}向量|a|=3,|b|=4,a与b之间的夹角为150°,求|a+b|求|a+b| 和(a+b)^2 这两个有什么区别吗? 设集合A=1,2 集合B=1,2,3 那么可以说集合A是集合B的子集吗 可以说集合A是集合B的真子集吗?我想知道子集跟真子集的区别 包含和真包含的区别 关于非零向量a,b,有下列四个命题,其中是真命题的为关于非零向量a,b,有下列四个命题,其中是真命题的为①. |a|+|b|=|a+b| 的充要条件要是 a和b的方向相同 ②. |a|+|b|=|a-b| 的充要条件要是 C语音中c=a++||b++和c=a++&&b++有什么区别呢? C语言中a>=b和a>b有什么区别? 离散数学中a=>b和a->b有什么区别? 真子集和子集有什么区别 还有一个符号的意思{a}和{a,b,c} 为什么{a}是真包含与于{a,b,c}而不是包含?还有○/这两个重叠 就是斜杠在圆上