[Anfängerfrage] Wie erkennen ob eine Referenz NULL ist?

31/12/2009 - 16:29 von Manuel Kobloch | Report spam
Hallo liebe Community,


Ich habe eine Klasse namens "AccessZugriff". Im Konstruktor versuche ich auf
eine Access Datenbank zuzugreifen. Sollte es nicht funktionieren, z.B. weil
die Datei nicht existiert oder weil das Datenbank Kennwort nicht stimmt,
wird this.dispose aufgerufen.

in der Methode "Dispose" steht nur eine Zeile "objCon.close".

So jetzt zum Formular. Dort instanziere ich die Klasse mit

AccessZugriff datenbank = new AccessZugriff();

Ich habe zwar gecoded, dass eine Fehlermeldung kommt, sollte was nicht
stimmen, doch wie kann ich das Ganze jetzt am besten verwalten? Ich dachte
ich prüfe, ob datenbank NULL ist, da die Referenz durch das dispose ja
entfernt wurde, oder? Aber ich weiß nicht wie ich das machen soll. Es gibt
sicherlich auch bessere Lösungen, aber dafür fehlt mir die Erfahrung.

Kann mir da jemand Empfehlungen geben?

Vielen Dank schon mal für die Mühen

Grüße

Manuel
 

Lesen sie die antworten

#1 Frank Dzaebel
01/01/2010 - 15:53 | Warnen spam
Hallo Manuel,

Ich dachte ich prüfe, ob datenbank NULL ist, da die Referenz durch
das dispose ja entfernt wurde, oder?



Nein, Dispose "entfernt" nicht irgendeine Referenz,
sondern gibt die dem Objekt zugeordneten Ressourcen frei.
Wenn Du selber auf null abfragen willst, könnte das ggf. über
Konstrukte wie folgende funktionieren:

// nur ganz grob ...
void TestMethode()
{
Test t=null; string msg = "";
try { t = new Test(); }
catch (Exception exp)
{
msg = exp.Message;
}
MessageBox.Show(
"Meldung:" + msg + "" +
"t == null: " + (t == null).ToString());
}

class Test
{
public Test()
{
SqlConnection sc = new SqlConnection("fehler");
}
}
__________

[Gewusst wie: Ausführen von Bereinigungscode mit finally
(C#-Programmierhandbuch)]
http://msdn.microsoft.com/de-de/lib...73166.aspx

Ggf. auch analog mit Dingen wie:
if (sc != null && sc.State != ConnectionState.Closed) [...]
aber: -> "Avoid Checking the State Property of OleDbConnection" (s.u.)

Ansonsten auch allgemein:

[Chapter 12 - Improving ADO.NET Performance]
http://msdn.microsoft.com/en-us/lib...98569.aspx
-> Suche nach: Exception

[Ausnahmen und Ausnahmebehandlung (C#-Programmierhandbuch)]
http://msdn.microsoft.com/de-de/lib...73160.aspx


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen