Ciao dna_programmer,
In un linguaggio ad oggetti ideale tutto è un oggetto, poi in mumerosi linguaggi di programmazione si è scesi a compromessi (per motivi di performance) ed alcune cose non sono oggetti, ad esempio gli interi in C++ e in Java non sono oggetti.
In NetFramework invece non ci sono compromessi in quanto
tutto è un oggetto, più semplice di così!
La scritta Integer è una scorciatoia per Int32 che è una struct (la quale a sua volta è un oggetto), ed essendo una struct viene passato per valore e può essere inizializzato con l' operatore new.
Tra l' altro un integer (essendo una struct, la quale è un Object) ha pure dei metodi (che eredita dalla classe Object), ad esempio il metodo ToString:
Dim i as Integer
Dim s as string = i.ToString()
In NetFramework tutto è un oggetto e poichè la classe Object ha il metodo ToString, allora tutto ha il metodo ToString (provare per credere)
Come abbiamo detto un Integer deriva dalla classe Object, e infatti puoi fare:
Dim i as Integer
Dim o as Object
o = i ' questa cosa si chiama boxing
La stessa cosa la puoi fare con qualsiasi struct (ovvero puoi assegnare una Struct a un Object)
Gli Integer come le struct (gli Integer sono Struct) se li crei col new vengono inizializzati, altrimenti no:
Dim x as Integer ' dichiara un tipo int e NON lo inizializza.
Dim x as new Integer ' dichiara un tipo int e lo inizializza
Tutto questo discorso è relativo al NetFramework quindi vale sia per Il Visual Basic che per il C#
Spero di esserti stato utile