表达式在调用sub时不会产生值

时间:2017-09-27 00:21:39

标签: vb.net oop methods

我想把这个公共sub hungrys(gutom as string)从我的zooanimal类称为我的form1.vb。供参考,请参阅我的代码。 我总是在我的Textbox10.text = za.hungrys(gutom as string)中得到错误“表达式不会产生值”

Public Class ZooAnimal

Public Sub New()
hungry = isHungry()

Public Function isHungry() As Boolean
    If age > 0 Then
        hungry = True
    End If
    If age <= 0 Then
        hungry = False
    End If
    Return hungry
End Function

 Public Sub hungrys(ByRef gutom As String)
    If hungry = True Then
        gutom = "The zoo animal is hungry"
    End If
    If hungry = False Then
        gutom = "The zoo animal is not hungry "
    End If
End Sub

Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim za As New ZooAnimal
Dim gutom As String = ""

TextBox10.Text = za.hungrys(gutom)

2 个答案:

答案 0 :(得分:2)

如果您尝试使用Sub参数而不是ByRef的返回值从[{1}}中获取值,那么:

Function

需要这样:

TextBox10.Text = za.hungrys(gutom)

第一行调用za.hungrys(gutom) TextBox10.Text = gutom 并为变量指定一个新值,第二行显示Sub中变量的值。

除非它是一个学习练习,否则没有充分的理由在那里使用TextBox参数。你通常会写这样的方法:

ByRef

然后像这样调用它:

Public Function hungrys() As String
    Dim gutom As String

    If hungry Then
        gutom = "The zoo animal is hungry"
    Else
        gutom = "The zoo animal is not hungry "
    End If

    Return gutom
End Sub

或只是:

Dim gutom As String = za.hungrys()

TextBox10.Text = gutom

请注意,该方法使用TextBox10.Text = za.hungrys() 而不是两个单独的If...Else块。

顺便说一句,对于一种方法来说,这是一个可怕的,可怕的名字。首先,它应该以大写字母开头。其次,&#34; hungrys&#34;没有告诉你方法的作用。如果我在没有背景的情况下阅读,我就不知道它的目的是什么。

答案 1 :(得分:0)

Sub更改为Function Sub返回值的程序 Function会返回值 就这么简单。

另外,声明参数gutom As Boolean的数据类型,因为它存储的值可能是True or False

请勿使用多余的If ..请改用If-Else

Public Function hungrys(ByVal gutom As Boolean) As String
  If hungry = True Then
      gutom = "The zoo animal is hungry"
  Else
      gutom = "The zoo animal is not hungry "
  End If
  Return gutom
End Function

通过

调用它
TextBox10.Text = za.hungrys(True)