Vb.net 如何使用函数返回的值?

Vb.net 如何使用函数返回的值?,vb.net,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 sco

为什么这个代码不起作用? 它返回一个意外值,实际总计为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
公共函数Cscore(ByVal分数为整数)为双精度
选择案例分数
病例评分=100
返回5.0
病例评分>=95
返回5.0
病例评分>=90
返回4.75
病例评分>=85
返回4.5
病例评分>=80
返回4.0
病例评分>=75
返回3.5
病例评分>=70
返回3.0
病例评分>=65
返回2.5
病例评分>=60
返回2.0
病例评分<60
返回1.0
结束选择
端函数

首先要感谢您,如果该值大于100,则此函数没有返回值(在本例中,它将返回类型-0的默认值)

在调用需要整数的函数之前,还应使用
Integer.TryParse
验证所有输入是否为整数


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

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

在调用需要整数的函数之前,还应使用
Integer.TryParse
验证所有输入是否为整数

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

使用Val()函数将字符串转换为整数

使用Val()函数将字符串转换为整数


如果你试着按照

Dim tb1 as Integer = Integer.Parse(TextBox1.Text)
Dim tb2 as Integer = Integer.Parse(TextBox2.Text)

total = Cscore(tb1) * tb2

如果你试着做一些类似的事情呢

Dim tb1 as Integer = Integer.Parse(TextBox1.Text)
Dim tb2 as Integer = Integer.Parse(TextBox2.Text)

total = Cscore(tb1) * tb2

使用Option Strict On可以帮助您快速发现问题。Case语句的语法错误,这些表达式的计算结果为布尔值。分数很少等于真或假,只有分数等于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。当您成为大师级人物后,您可以再次关闭它。

使用Option Strict On可以帮助您快速发现问题。Case语句的语法错误,这些表达式的计算结果为布尔值。分数很少等于真或假,只有分数等于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。当你成为大师后,你可以再次关闭它。

如果你告诉我们代码以何种方式不起作用,回答这个问题会容易得多。它会抛出错误吗?返回一个意外值,什么?在我看来,通过将文本框的文本属性传递给该函数,您正在导致从
string
int
的隐式转换……如果您告诉我们代码以何种方式不工作,那么回答这个问题就会容易得多。它会抛出错误吗?返回一个意外值,什么?在我的脑海中,通过将文本框的文本属性传递到函数…+1,您正在导致从
string
int
的隐式转换。还考虑不转选项严格关闭,因为为什么不让编译器捕获这样的错误?如果返回相同的结果为>=95和= 100为什么这两种情况?除非出于示例代码的目的,这是一种过分简化的做法。@djacobson Option Strict默认为关闭,所以说“考虑不关闭Option Strict”是没有意义的。Hans Passant已经说过要把它打开。+ 1一般的好建议。还考虑不转选项严格关闭,因为为什么不让编译器捕获这样的错误?如果返回相同的结果为>=95和= 100为什么这两种情况?除非出于示例代码的目的,这是一种过分简化的做法。@djacobson Option Strict默认为关闭,所以说“考虑不关闭Option Strict”是没有意义的。Hans Passant已经说过要把它打开。