Verificare che un oggetto sia stato effettivamente istanziato

lunedì 01 dicembre 2003 - 13.19

sheen77 Profilo | Newbie

Salve a tutti, qualcuno sa qual'è un modo semplice per vedere se un oggetto non è stato istanziato in visual basic . net.
Ovvero:

Dim pippo as Persona
oggetto1.nome = "pippo"

' da errore perchè pippo non èstato istanziato, si ottiene un eccezione System.NullReferenceException

Uno dei modi giusti è ovviamente:

Dim pippo as Persona = new Persona
oggetto1.nome = "pippo"

Un modo sarebbe catturare l'eccezione ma credo sia inutile.

Io vengo da java (spero questo non mi privi del vostro aiuto:)) dove scrivevo:

if (pippo == null) {..}

Probabilmente esiste qualcosa di simile in visual basic .net. O no?

Brainkiller Profilo | Guru

Ciao,
non ho ben capito il codice che hai scritto, perchè crei un oggetto pippo e poi lo assegni sotto come strigna fra apici.
Comunque per verificare se un oggetto è istanziato in C# si usa ==null oppure in VB.NET si usa:

Dim a As Object
If (a Is Nothing) Then
Console.WriteLine("NOTHING")
End If

Ciao
david

sheen77 Profilo | Newbie

Vi ringrazio per le dritte, quello della persona voleva essere un esempio in cui ho una classe persona con un attributo nome
che ha tipo stringa.
Volevo mostrare come non avendo ancora allocato memoria per l'oggetto,poichè dichiarato solo con l'istruzione dim, tentare
di accedere ad un suo attributo vuol dire provocare un'eccezione.
Alla cattura dell'eccezione ci avevo pensato però immaginavo che esistesse un comando + immediato, ed Is Nothing è proprio quello che cercavo.

Voglio lasciare un esempio di uso se a qualcuno può essere utile.Il seguente è un metodo che si occupa di eseguire una query in modalità connessa(già esiste la connessione e tutto il resto), uso Is Nothing per verificare se mi trovo all'interno di una Transazione già creata dal codice chiamante, (Me.transazione), se si essa sarà già allocata ma avrò l'esigenza di settare l'attributo Transaction dell'oggetto SqlCommand.

Sub esegui(ByVal query As String)

Dim cmd As SqlCommand = Me.conn.CreateCommand()
cmd.CommandText = query

If (Not (Me.transazione Is Nothing)) Then 'controllo se è attiva una transazione
cmd.Transaction = Me.transazione
End If

Me.drd = cmd.ExecuteReader()
End Sub

Grazie e ciao a tutti.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5