TheDeveloperBlog.com

Home | Contact Us

C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML

VB.NET Class Examples

This VB.NET article describes the Class and its importance. It provides example code.

Classes. Programs are complex.

A class is one part of a program. It is self-contained. When we modify a class, other parts of the program are not affected.

An example. This program introduces an Example Class. In the Class, we have a Private field of type Integer. We also have a constructor—the New() Sub.

Value: And finally we have the Value() Function, which returns an expression based on a field.

New: In the Main entry point, an instance of Example is created and Value() is invoked. An Example now exists on the managed heap.

Private, Public: A private member cannot be accessed outside the class. A public one, however, can be externally called.

Based on:

.NET 4.5

VB.NET program that uses Class

Class Example
    Private _value As Integer

    Public Sub New()
	_value = 2
    End Sub

    Public Function Value() As Integer
	Return _value * 2
    End Function
End Class

Module Module1
    Sub Main()
	Dim x As Example = New Example()
	Console.WriteLine(x.Value())
    End Sub
End Module

Output

4

MyClass. This keyword indicates exactly which variable we want to reference. This means that "MyClass._name" refers to a field with of identifier "_name".

Here: This example uses a formal argument in the Class constructor (Sub New). It receives the String and stores it in the field.

Tip: Often classes will have argument validation—for example, a method could reject certain String arguments.

VB.NET program that uses MyClass

Class Perl
    Private _name As String

    Public Sub New(ByVal name As String)
	MyClass._name = name

	Console.WriteLine(MyClass._name)
	Console.WriteLine(name)
	Console.WriteLine(_name)
    End Sub
End Class

Module Module1
    Sub Main()
	Dim p As Perl = New Perl("Sam")
    End Sub
End Module

Output

Sam
Sam
Sam

Inherits. With Inherits, one class can inherit from another class. This means it gains all the fields and procedures from the parent class.

Class A: Let's begin by looking at Class A: this class contains a field (_value) as well as a Sub (Display()).

Class B, C: Class B and Class C both use the Inherits keyword and are derived from Class A. They provide their own constructors (New).

Tip: You can see the New B() and New C() will do slightly different things when called.

VB.NET program that uses Inherits keyword

Class A
    Public _value As Integer

    Public Sub Display()
	Console.WriteLine(_value)
    End Sub
End Class

Class B : Inherits A
    Public Sub New(ByVal value As Integer)
	MyBase._value = value
    End Sub
End Class

Class C : Inherits A
    Public Sub New(ByVal value As Integer)
	MyBase._value = value * 2
    End Sub
End Class

Module Module1
    Sub Main()
	Dim b As B = New B(5)
	b.Display()

	Dim c As C = New C(5)
	c.Display()
    End Sub
End Module

Output

5
10

Composite names. In programming languages, a name such as "MyBase._value" is called a composite name. We are accessing the base class (A) and the field on the base class (_value).

Tip: This eliminates any possible ambiguity between fields. Two classes can have fields with identical names.

Call base Sub. Above, the Display Sub is defined only on Class A. However, Class B and Class C inherit this Sub as well as the field.

Thus: When b.Display() and c.Display() are called, the A.Display Sub is invoked.

Interfaces. Instead of Inherits, we could use an Interface. We use the Implements keyword with Interfaces. An Interface is a contract—a set of demands that compliant types fill.

Interface

Meanwhile: A base class is a core template of data and functionality. Base classes are not the same as interfaces.

Note: With Inherits, we implement complex object models that can closely represent, in a declarative way, a type framework.

MustInherit. This provides an alternative to the Interface type. It modifies a Class so that it can only be used as a base Class. The class no longer can be directly instantiated.

And: A MustInherit Class is essentially a template that is part of the classes that inherit from it.

MustInherit

Shared. Some fields in a Class are not tied to a Class instance. Only one instance is needed. Shared is used on fields to make one field shared among all Class instances.

Tip: A Public Shared field can be used in the same way as a global variable. This is useful for storing settings.

Shared

VB.NET program that uses Shared field

Class Test
    Public Shared _v As Integer
End Class

Module Module1
    Sub Main()
	Test._v = 1
	Console.WriteLine(Test._v)
	Test._v = 2
	Console.WriteLine(Test._v)
    End Sub
End Module

Output

1
2

Shared Sub. These methods are not tied to a Class instance. A Shared Sub can be called with a composite name. Next, the Write Sub inside the Test class is called with "Test.Write()".

VB.NET program that uses Shared Sub

Class Test
    Public Shared Sub Write()
	Console.WriteLine("Shared Sub called")
    End Sub
End Class

Module Module1
    Sub Main()
	Test.Write()
    End Sub
End Module

Output

Shared Sub called

Is, IsNot. We use these operators to check reference types. With these, we can check reference types against special value such as Nothing.

Nothing: We compare references to Nothing. The "Is" and "IsNot" operators are most often used with the Nothing constant.

Nothing

Here: In this example, we see how "IsNot Nothing" and "Is Nothing" are evaluated with a local variable.

Tip: This pattern of code is sometimes useful. It helps if you are not sure the variable is set to something.

VB.NET program that uses Is, IsNot operators

Module Module1
    Sub Main()
	Dim value As String = "cat"

	' Check if it is NOT Nothing.
	If value IsNot Nothing Then
	    Console.WriteLine(1)
	End If

	' Change to Nothing.
	value = Nothing

	' Check if it IS Nothing.
	If value Is Nothing Then
	    Console.WriteLine(2)
	End If

	' This isn't reached.
	If value IsNot Nothing Then
	    Console.WriteLine(3)
	End If
    End Sub
End Module

Output

1
2

Is, IsNot notes. These operators can only be used with reference types. The Nothing constant is a special instance of a reference type. We cannot use the Is-operator to perform casting.

Note: These are most commonly used with the Nothing constant. But any two references can be compared.

And: The result depends on the memory locations—not the object data the references point to.

Partial. This modifier specifies that a class is specified in multiple declarations. With Partial, were open a class and add new parts to it. A Class can span multiple files.

VB.NET that uses Partial

Module Module1

    Partial Class Test
	Public Sub X()
	    Console.WriteLine("X")
	End Sub
    End Class

    Partial Class Test
	Public Sub Y()
	    Console.WriteLine("Y")
	End Sub
    End Class

    Sub Main()
	' Invoke methods on the partial class.
	Dim t As Test = New Test()
	t.X()
	t.Y()
    End Sub

End Module

Output

X
Y

Friend. This modifier makes a member (like a Class, Sub or Function) unavailable outside the present assembly. An assembly is physical file that contains compiled code.

Here: We specify that Display() is a Friend Sub. So it is Public inside the assembly, but not available outside.

VB.NET that uses Friend

Class Item
    Friend Sub Display()
	Console.WriteLine("Friend Class used")
    End Sub
End Class

Module Module1
    Sub Main()
	' The Display Sub is public if we are in the same assembly.
	Dim local As Item = New Item()
	local.Display()
    End Sub
End Module

Output

Friend Class used

Object. All classes inherit from Object, the ultimate base class. We thus can cast all variables to an Object. The object class provides some helpful methods.

Equals: This compares the contents of two objects. Implementations from derived classes are used.

GetType: This returns a Type object based on the type of the current object. GetType is similar to VarType.

GetHashCode: Returns a hash code integer based on the content of the instance. Derived implementations are often present.

ToString: Converts an Object to a string representation. The exact string returned varies by implementation.

VB.NET that uses Object

Class Example
    ' An empty Example class: it automatically inherits from Object.
End Class

Module Module1
    Sub Main()
	' Create instance of the Example class.
	Dim x As Example = New Example()

	' The class inherits from Object, so we can cast it to an Object.
	Dim y As Object = x
	' ... This method is from Object.
	Console.WriteLine(y.GetHashCode())

	' When we call GetHashCode, the implementation from Object is used.
	Console.WriteLine(x.GetHashCode())
    End Sub
End Module

Output

46104728
46104728

VarType. This function is equivalent to the GetType function. It returns a Type reference for an object instance. Its syntax is different from GetType's.

VarType

Modules. A Module has shared data. The Main Subroutine is found in a Module. All fields in a Module are shared, meaning they are not part of an instance. Modules are not types.

Module

Namespaces. With namespaces, we have another way to organize programs. Namespaces contain other types like classes, but are not objects.

Namespace

Classes are essential. They are building blocks. A class is a reference type. It is allocated on the managed heap. It can have Functions, Subs, and data members—this includes fields.


Related Links

Adjectives Ado Ai Android Angular Antonyms Apache Articles Asp Autocad Automata Aws Azure Basic Binary Bitcoin Blockchain C Cassandra Change Coa Computer Control Cpp Create Creating C-Sharp Cyber Daa Data Dbms Deletion Devops Difference Discrete Es6 Ethical Examples Features Firebase Flutter Fs Git Go Hbase History Hive Hiveql How Html Idioms Insertion Installing Ios Java Joomla Js Kafka Kali Laravel Logical Machine Matlab Matrix Mongodb Mysql One Opencv Oracle Ordering Os Pandas Php Pig Pl Postgresql Powershell Prepositions Program Python React Ruby Scala Selecting Selenium Sentence Seo Sharepoint Software Spellings Spotting Spring Sql Sqlite Sqoop Svn Swift Synonyms Talend Testng Types Uml Unity Vbnet Verbal Webdriver What Wpf