VB到C#,奇怪的返回表达式

VB到C#,奇怪的返回表达式,c#,vb.net,C#,Vb.net,我正在从一些遗留的VB代码中编写C#代码,原始的VB代码是: Shared Function TriangleArea(ByVal side1 As Double, ByVal side2 As Double, ByVal side3 As Double) As Double Dim halfP As Double ' evaluate half of the perimeter halfP = (side1 + side2 + side3) / 2 Triang

我正在从一些遗留的VB代码中编写C#代码,原始的VB代码是:

Shared Function TriangleArea(ByVal side1 As Double, ByVal side2 As Double, ByVal side3 As Double) As Double
    Dim halfP As Double
    ' evaluate half of the perimeter
    halfP = (side1 + side2 + side3) / 2
    TriangleArea = Math.Sqrt(halfP * (halfP - side1) * (halfP - side2) * (halfP - side3))
End Function
函数中的最后一行似乎很奇怪

我用C#重新写下:


我不确定最后一个退货条款。如果我是对的,有什么建议吗?谢谢

在VB中,函数名是一个返回类型的变量,如果你给函数名赋值,它就是返回值,你不需要为它声明和初始化一个单独的变量

这在
c#
中是不可能的,您不能将其赋值给函数名,因此需要声明一个附加变量来保存该值(如果需要)


第一个是继承自
VB6
的旧语言功能为了帮助迁移,您应该使用一个变量来保存值(如果需要),并使用return语句来正确地从方法返回值。

如果必须将返回值赋给变量,则需要将其命名为不同于方法名称的名称。同样,在您的情况下,您甚至可能不需要在返回值之前存储变量,因此您需要做的是更改:

double TriangleArea = Math.Sqrt(halfP * (halfP - side1) * (halfP - side2) * (halfP - side3));
return TriangleArea;
进入


使用正确的命名约定。它看起来很混乱,因为方法名和返回变量名是相同的。顺便说一句,您可以使用这个在线工具从VB转换为C#或其他方式。谢谢Hakunamatata!
double TriangleArea = Math.Sqrt(halfP * (halfP - side1) * (halfP - side2) * (halfP - side3));
return TriangleArea;
return Math.Sqrt(halfP * (halfP - side1) * (halfP - side2) * (halfP - side3));