Bonjour,
J'avais qq questions de débutant a propos de using et des exceptions :
1)Est-ce que la method Dispose marche sur un objet même si celui-ci est Null ? Car 95% du code que j’ai trouve sur internet ne vérifie jamais dans un Finally si l’objet est Null ou pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 MyObj o = null ; Try { O = new MyObj() ; } Catch(Exception e) { } Finally { o.dispose() ; // Mais si o est tjs Null alors ? }
2) Si j’ai bien compris en utilisant
Donc je n’ai pas besoin d’utilise o.Dipose() ou o.Close() ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Using(MyClass o = new MyClass()) { Code } //Ici lobjet Myclass sera libérée s' il y a des unmanaged ressources.
3) J’ai vu bcp de code qui remplacent des try/catch par un Using par exemple :
A la place de faire
On remplace cela par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 try { SqlDataReader reader = command.ExecuteReader() } Catch(Exception e) { Code } Finally { code }
Mais dans le cas du Using, qu’est ce qui arrive s’il y a une exception? Elle est renvoyée au niveau au dessus si on met pas le Using dans un try/catch?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 using (SqlConnection fnet = new SqlConnection(connectionString)) { }
4) Est-ce que dans un Using tous les objets qui utilisent des unmanaged ressources seront libérés ou seul l’objet déclaré entre les () du Using ?
Ex :
Merci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 using (SqlConnection fnet = new SqlConnection(connectionString)) { MyClass o = new MyClass() ; //Ma class avec du unmanaged ressources //Est-ce que ici jai besoin de faire o.Dipose() ? }
Partager