i want to call this public sub hungrys(gutom as string) from my zooanimal class to my form1.vb. for reference, please refer to my code. i always get an error "expression does not produce a value" in my 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)
Change your
Sub
toFunction
.Sub
are procedures that do not Return a value.Function
do return values.It's just that simple.
Also, declare the data type of your parameter
gutom As Boolean
because it stores a value that could beTrue or False
.Do not use redundant
If
.. UseIf-Else
instead.Call it By
If you are trying to get a value out of a
Sub
with aByRef
parameter rather than the return value of aFunction
then this:would need to be this:
The first line calls the
Sub
and assigns a new value to the variable and the second line displays the variable's value in theTextBox
.Unless it's as a learning exercise though, there's no good reason to use a
ByRef
parameter there. You'd normally write that method like this:and then call it like this:
or just:
Notice that that method uses an
If...Else
rather than two separateIf
blocks.By the way, that is a terrible, terrible name for a method. Firstly, it should start with an upper-case letter. Secondly, "hungrys" doesn't tell you what the method does. If I read that with no context, I'd have little idea what it's purpose was.