VB.NET Shared FunctionUse the Shared modifier to specify that a member is not part of a type instance.
A Shared function is not part of an instance. Some functions and fields may be specific to an entire type, not an instance. The Shared modifier specifies that a function is meant for the entire type, not just a certain instance of it.Function
This program introduces a Widget class. In the Widget class, we see a Public Shared Function and a Public Function. In the Main subroutine, we can call Widget.Test() because Test() is a Shared function. No instance is required.Sub
However: We must instantiate Widget, with New Widget(), to call TestB(). The TestB() function is not Shared.
Note: Fields, such as the _value field above, are also Shared or not Shared.
And: In a program, Shared fields can be accessed by Shared Functions. Regular Functions can access both Shared fields and also regular fields.
Thus: This means that Shared functions have additional restrictions on what they can do.
VB.NET program that uses Shared function
Public Shared Function Test() As Integer
' Cannot access regular fields.
Dim _value As String = "2"
Public Function TestB() As Integer
' Can access regular fields.
' Use Shared Function.
' Use Non-Shared Function.
Dim w As Widget = New Widget()
The .NET Framework's execution engine needs to evaluate instances before an instance function can be called. For this reason, Shared functions (static in the C# language) have a tiny performance advantage.
Also: In many implementations, instance functions are passed a reference to the instance as the first argument.
We saw an example of a Shared function and a regular function. Shared members, often called static members, are part of the type, not part of the type's instances. They have advantages and also disadvantages.
But: You can determine whether a function should be shared based on whether it acts upon specific instances or not.
© 2007-2020 Sam Allen. Every person is special and unique. Send bug reports to firstname.lastname@example.org.