无返回功能 - 该功能如何工作?

时间:2016-04-14 09:50:52

标签: vb.net

我正在开发一个旧的VB项目,并且我将它重写为C#。

我有几行不符合我对功能的了解。我已经阅读过MSDN,据我所知,一个函数必须有(seq (->bytes (Long/MAX_VALUE))) => (-1 -1 -1 -1)Return,如果没有(没有意义,有程序)你可以发送数据Exit

这个功能没有其中任何一个,但它仍然应该做某事 - 如果不是,我不认为该程序会起作用,但确实如此。

它看起来像是在呼唤自己但是过载;但我不知道,这对我来说太奇怪了。

功能本身:

ByRef

变量因子在代码的其他地方定义,它是:

Private Function f(ByVal numero As Double) As String
    Dim intermedio As Double
    intermedio = numero * Factor 
    If intermedio - Int(intermedio) = 0 Then

        f = Format(intermedio, "0")
    Else
        f = Format(intermedio, "###0.0######")
    End If
    'f = Format(intermedio, "0.00000E+000")
    f = Replace(f, ",", ".")
    'f = Str(numero)
End Function

对该功能的调用:

double Factor = 1;

3 个答案:

答案 0 :(得分:8)

在Visual Basic中,函数本身的名称将成为可在函数中使用的变量。在函数结束时,除非使用显式Return语句,否则将其中剩余的内容用作返回值。

在您的情况下,f始终使用。

引用MSDN

  

退出功能返回语句会立即退出功能过程。任何数量的退出功能返回语句都可以出现在程序的任何位置,您可以混合使用退出功能返回陈述。

     

如果您使用退出功能而未为 name 指定值,则该过程将返回 returntype 中指定的数据类型的默认值。如果未指定 returntype ,则该过程返回 Nothing ,这是对象的默认值。

答案 1 :(得分:2)

f = Replace(f, ",", ".")

您的函数名称为f,此局部变量是您返回的值(因为名称相同)。是自动的。

答案 2 :(得分:1)

在C#中

    private string f(double numero)
{
    string functionReturnValue = null;
    double intermedio = 0;
    intermedio = numero * Factor;

    if (intermedio - Conversion.Int(intermedio) == 0) {
        functionReturnValue = Strings.Format(intermedio, "0");
    } else {
        functionReturnValue = Strings.Format(intermedio, "###0.0######");
    }
    //f = Format(intermedio, "0.00000E+000")
    functionReturnValue = Strings.Replace(f(), ",", ".");

    //f = Str(numero)
    return functionReturnValue;
}

正如Steve和许多其他人在VB中提到的那样,如果函数和变量的名称相同,则返回变量...在C#中,在函数中添加一个functionReturnValue代替f并返回它。