我想把这个公共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)
答案 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)