生成代码后有差别吗?

fanciex 2005-06-09 05:39:37
return "aaa";


string aaa = "aaa";
return aaa;

生成代码后有差别吗?
...全文
123 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
fanciex 2005-06-10
  • 打赏
  • 举报
回复
fancyf? my ID is fanciex .haha,thank you!
fanruinet 2005-06-09
  • 打赏
  • 举报
回复
用不着知道意思,知道那种效率高就好了
IL_0000: ldstr "abc"--load string
IL_0005: stloc.0--------store the string to a variable(loc.0)
IL_0006: ldloc.0--------load the variable(at loc.0)
IL_0007: ret-------return
fanciex 2005-06-09
  • 打赏
  • 举报
回复
谁能解释下面的代码是何意思吗?
-----
{
// 代码大小 8 (0x8)
.maxstack 1
.locals init (string V_0)
IL_0000: ldstr "abc"
IL_0005: stloc.0
IL_0006: ldloc.0
IL_0007: ret
} // end of method Tools::TestString1
fanruinet 2005-06-09
  • 打赏
  • 举报
回复
我测试过了,比较一下IL代码就知道了
public string TestString1()
{
string aaa = "abc";
return aaa;
}

public string TestString2()
{
return "abc";
}

IL:
.method public hidebysig instance string
TestString1() cil managed
{
// 代码大小 8 (0x8)
.maxstack 1
.locals init (string V_0)
IL_0000: ldstr "abc"
IL_0005: stloc.0
IL_0006: ldloc.0
IL_0007: ret
} // end of method Tools::TestString1

.method public hidebysig instance string
TestString2() cil managed
{
// 代码大小 6 (0x6)
.maxstack 1
IL_0000: ldstr "abc"
IL_0005: ret
} // end of method Tools::TestString2


先定义aaa再返回多了两条指令
fanciex 2005-06-09
  • 打赏
  • 举报
回复
请问是会创建
1个 string?
2个 srring?
1个 string + 1个引用?
MyLf 2005-06-09
  • 打赏
  • 举报
回复
应该说效率没有什么差别.
因为都是返回"aaa"的引用.没有额外的消耗
winteryoung84 2005-06-09
  • 打赏
  • 举报
回复
其实是多创建了一个变量 aaa
winteryoung84 2005-06-09
  • 打赏
  • 举报
回复
楼上说得对
fanruinet 2005-06-09
  • 打赏
  • 举报
回复
有区别,第一种效率好一些

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧