vb.net – 函数的默认返回变量是否总是被分配?

vb.net – 函数的默认返回变量是否总是被分配?,第1张

概述我对如何实现名称与函数相同的默认变量感兴趣. >即使我不使用Sum,总是会分配吗? (见案例1) >如果我选择另一个变量(CASE 3中的总数),是否使用而不是Sum? 编译时,以下3个等效案例是否也相同?还是有些优于其他人? ' EQUIVALENT CASES' CASE 1Function Sum(a As Integer, b As Integer) As Integer R 我对如何实现名称与函数相同的默认变量感兴趣.

>即使我不使用Sum,总是会分配吗? (见案例1)
>如果我选择另一个变量(CASE 3中的总数),是否使用而不是Sum?

编译时,以下3个等效案例是否也相同?还是有些优于其他人?

' EQUIVALENT CASES' CASE 1Function Sum(a As Integer,b As Integer) As Integer    Return a + bEnd Function' CASE 2Function Sum(a As Integer,b As Integer) As Integer    Sum = a + bEnd Function' CASE 3Function Sum(a As Integer,b As Integer) As Integer    Dim Total As Integer    Total = a + b    Return TotalEnd Function

当我在某处读到时,内联插入编译为小于32字节的函数.我想知道在某些情况下,我是否可能因为选择的符号而高于或低于限制.

解决方法 我将你的函数分别重命名为Sum1,Sum2和Sum3,然后通过linqPad运行它们.这是生成的IL:

Sum1:IL_0000:  ldarg.1     IL_0001:  ldarg.2     IL_0002:  add.ovf     IL_0003:  ret         Sum2:IL_0000:  ldarg.1     IL_0001:  ldarg.2     IL_0002:  add.ovf     IL_0003:  stloc.0     // Sum2IL_0004:  ldloc.0     // Sum2IL_0005:  ret         Sum3:IL_0000:  ldarg.1     IL_0001:  ldarg.2     IL_0002:  add.ovf     IL_0003:  stloc.1     // TotalIL_0004:  ldloc.1     // TotalIL_0005:  ret

似乎Sum2和Sum3导致相同的IL. Sum1似乎更有效,因为它将运算符的结果直接放到堆栈上.其他人必须将结果从堆栈中拉入局部变量,然后将其推回堆栈!

总结

以上是内存溢出为你收集整理的vb.net – 函数的默认返回变量是否总是被分配?全部内容,希望文章能够帮你解决vb.net – 函数的默认返回变量是否总是被分配?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1239110.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存