In visual basic, Predicate is a built-in generic delegate and it is useful to validate whether the input parameter meets the specified condition or not and it’s same as Func and Action delegates to hold the reference of one or more methods.
The Predicate delegate can hold only the methods that take only one input parameter and returns a Boolean type value either true or false.
In the latest versions, the Predicate delegate will available automatically with System namespace and it will accept only one input parameter and returns a Boolean value either True or False.
Following is the syntax of declaring the Predicate delegate with one input parameter in visual basic.
Public Delegate Function Predicate(Of In T)(ByVal arg As T) AsBoolean
Here, ByVal parameters in the brackets ( )
will be considered as input parameter and Boolean is the return type.
Following is the example of defining the Predicate delegate to hold the reference of one or more methods which is having the same method signature.
Module Module1
Sub Main(ByVal args As String())
Dim dlgt As Predicate(Of Integer) = AddressOf IsGreaterthanZero
Dim result As Boolean = dlgt(10)
Console.WriteLine("Result: {0}", result)
Console.ReadLine()
End Sub
Public Function IsGreaterthanZero(ByVal a As Integer) As Boolean
Dim i As Boolean = False
If a > 0 Then
i = True
End If
Return i
End Function
End Module
If you observe the above example, we created a Predicate delegate object (dlgt) with one input parameter (int) and assigned the method (IsGreaterthanZero) directly to the delegate object.
Here, the IsGreaterthanZero method is accepting only one input parameter and validating whether the input parameter is greater than zero or not. In case, if it is greater than zero it will return the value true otherwise it will return false.
When we execute the above example, we will get the result as shown below.
Every time while creating the predicate delegate we must need to remember that we can include only one input parameter and return type must be Boolean.
In visual basic, we can assign the anonymous method directly to the Predicate delegate by using delegate keyword like as shown below.
Sub Main(ByVal args As String())
Dim dlgt As Predicate(Of Integer) = Function(ByVal x As Integer)
Dim i As Boolean = False
If x > 0 Then
i = True
End If
Return i
End Function
Dim result As Boolean = dlgt(10) ' Result: True
End Sub
If you observe the above code, we assigned an anonymous method directly to the Predicate delegate object (dlgt) using the delegate keyword.
In visual basic, we can also use the Predicate delegate with lambda expressions. The lambda expressions are the shorthand way to declare anonymous methods.
Sub Main(ByVal args As String())
Dim dlgt As Predicate(Of Integer) = Function(x)
Dim i As Boolean = False
If x > 0 Then
i = True
End If
Return i
End Function
Dim result As Boolean = dlgt(10) ' Result: True
End Sub
The following are the important points which we need to remember about the Predicate delegate in visual basic.