VB:替换类实例中的IIF函数调用

时间:2019-06-06 12:30:39

标签: vb.net

我在VB中有以下课程(简称):

Public Class MyClass

    Public Const DefaultParam As Single = 0.2F

    Public Sub New(ByVal param1 As Single, ByVal param2 As Single, Optional ByVal param3 As Single = 0.0F)

        MyClass.New(param1, param2, 0.0F, 0.0F, CSng(IIf(param3 <= 0.0F, DefaultParam, param3)))
        // .. here is some code
        End Select
    End Sub

End Class

我需要用其他一些VB或C#代码替换“ iif”函数调用(这是必需的)。 我试图编写自己的函数:

Public Function GetMyValue(ByVal myParam As Single) As Single
        If myParam <= 0.0F Then
            Return DefaultParam
        End If

        Return myParam
    End Function

并这样称呼它:

MyClass.New(param1, param2, 0.0F, 0.0F,CSng(GetMyValue(param3)))

但是我得到了编译器错误:

  

无法在共享上下文中访问非共享函数'GetMyValue'。

任何想法都会受到赞赏。

2 个答案:

答案 0 :(得分:1)

您是否尝试过更改函数声明:

Public Shared Function GetMyValue(ByVal myParam As Single) As Single

这将使您无需实例化类即可进行函数调用。

答案 1 :(得分:0)

这应该正常工作。如果两个值均为Single类型,则应使用简单的'if'。

   MyClass.New(param1, param2, 0.0F, 0.0F, If(param3 <= 0.0F, DefaultParam, param3))