我在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'。
任何想法都会受到赞赏。
答案 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))