Kev*_*n M 4 .net c# vb.net return
我目前正在努力将一些VB源代码转换为C#.虽然我知道有一些转换器可以实现自动化,并且我可以实际使用这个特殊的dll而无需重写它,我正在部分地这样做,所以我可以更好地理解VB.并不是期望写它,但它至少帮助我能够阅读它.
在这样做的过程中,我遇到了令人困惑的事情.以下代码片段是示例,但我在整个程序中都看到了它.
VB源代码:
Friend Function AllocateObjectNumber() As Long
AllocateObjectNumber = _nextFreeObjectNumber
_nextFreeObjectNumber += 1
_objectAllocatedCount += 1
End Function
Run Code Online (Sandbox Code Playgroud)
我的翻译C#代码:
internal long AllocateObjectNumber()
{
cvNextFreeObjectNumber += 1;
cvObjectAllocatedCount += 1;
return cvNextFreeObjectNumber;
}
Run Code Online (Sandbox Code Playgroud)
我不理解的是VB使用的流控制.我理解这AllocateObjectNumber += 1
是用来代替的return cvNextFreeObjectNumber
,但如果这一行在两个变量递增之前出现,那么该代码怎么不被视为无法访问?根据我对C#的理解,这个方法的第一行会立即返回到调用方法,整个方法基本上就是伪属性.
任何有用的解释?
VB方法更类似于将值存储在临时变量中:
internal long AllocateObjectNumber()
{
var nextNumber = _nextFreeObjectNumber
cvNextFreeObjectNumber += 1;
cvObjectAllocatedCount += 1;
return nextNumber;
}
Run Code Online (Sandbox Code Playgroud)
在VB中function = value
语法没有return
- 所以后面的代码可以继续运行.当该方法到达结尾时,您使用的值将成为首先调用它的任何值的"返回"值.
您可以function = value
在同一方法中多次使用语法,作为在不同条件下返回不同结果的方法,而不需要我在我的示例中使用的临时变量.
归档时间: |
|
查看次数: |
285 次 |
最近记录: |