如何使用函数返回的值?

时间:2010-09-05 01:53:53

标签: vb.net

为什么这段代码不起作用? 它返回一个意外的值,实际上总计= 0。

total = Cscore(TextBox1.Text) * CDbl(TextBox2.Text)

尝试此时

total = TextBox1.Text * TextBox2.Text

它返回预期值,但我需要将textbox1.text传递给函数以获得所需的值

功能就是这个

Public Function Cscore(ByVal score As Integer) As Double

    Select Case score
        Case score = 100
            Return 5.0
        Case score >= 95
            Return 5.0
        Case score >= 90
            Return 4.75
        Case score >= 85
            Return 4.5
        Case score >= 80
            Return 4.0
        Case score >= 75
            Return 3.5
        Case score >= 70
            Return 3.0
        Case score >= 65
            Return 2.5
        Case score >= 60
            Return 2.0
        Case score < 60
            Return 1.0
    End Select
End Function

提前致谢

4 个答案:

答案 0 :(得分:4)

使用Option Strict On可以帮助您快速找到问题。 Case语句的语法错误,这些表达式求值为Boolean。得分很少等于真或假,如果得分等于0或1,你只得到一个值。你需要这样写:

    Select Case score
        Case Is = 100
            Return 5.0
        Case Is >= 95
            Return 5.0
        Case Is >= 90
            Return 4.75
        '' etc...
    End Select

在学习VB.NET编程时使用Option Strict On。当你成为一名大师时,你可以再次关闭它。

答案 1 :(得分:2)

对于初学者,如果该值大于100,则此函数没有返回值(它将返回类型的默认值 - 在此实例中为0)。

在调用期望整数的函数之前,您还应该使用Integer.TryParse来验证所有输入是否为整数。

最后,我建议在任何case else语句的末尾始终使用select

答案 2 :(得分:0)

使用Val()函数将String转换为整数。

http://msdn.microsoft.com/en-us/library/k7beh1x9(VS.80).aspx

答案 3 :(得分:0)

如果您按照

的方式尝试一下,该怎么办?
Dim tb1 as Integer = Integer.Parse(TextBox1.Text)
Dim tb2 as Integer = Integer.Parse(TextBox2.Text)

total = Cscore(tb1) * tb2