What is the difference between these two methods of initiating a new class? Both work, but I'm wondering what and why the technical difference is.
Version 1 of initiating the class.
Dim sMyClassVersion1 As New Class1()
Version 2 of initiating the class.
Dim sMyClassVersion2 As Class1 = New Class1()
Shown in a code example:
Public Class Class1
Private MyValue As Integer
Public Sub New()
MyValue = 4
End Sub
Public Function MyFunction() As Integer
Return MyValue * 100
End Function
End Class
Partial Class MyWebPage
Inherits System.Web.UI.Page
'Version 1 of initiating the class.
Dim sMyClassVersion1 As New Class1()
'Version 2 of initiating the class.
Dim sMyClassVersion2 As Class1 = New Class1()
Private Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
Response.Write(sMyClassVersion1.MyFunction())
End Sub
End Class
The best way to know is to use an online tool, like sharplab.io, to see the generated code.
At the end of the day, both ways to initialize the instance produce the same code.
IL_0006: ldarg.0
IL_0007: newobj instance void Class1::.ctor()
IL_000c: stfld class Class1 MyWebPage::sMyClassVersion1
IL_0011: ldarg.0
IL_0012: newobj instance void Class1::.ctor()
IL_0017: stfld class Class1 MyWebPage::sMyClassVersion2