Is het noodzakelijk dat ik het streamreader object sluit voordat ik null return? Of ruimt de garbage collector het object vanzelf op omdat er geen verwijzingen meer bestaan naar het object (sr == null).
Een ander voorbeeld:
In het geval dat de else wordt doorlopen, wordt de huidige instance (1) gehide, een nieuwe instance aangemaakt (2), en aan de variable staticForm2 toegewezen. Wordt instance (1) nu automatisch opgeruimd door NET omdat er geen referenties meer zijn naar het object (staticForm2 verwijst niet meer naar deze instance)?
Dit is volgens mij ook van toepassing als Reference.staticForm2.Visible false is.
C#:
1
2
3
4
5
6
| StreamReader sr = new StreamReader(filePath); //sr read .. //Function returns streamreader instance, but on error returns null. sr = Function(sr); |
C#:
1
2
3
4
5
6
7
8
9
10
11
12
| Function: try { //stuff } catch { return null; } return sr; |
Een ander voorbeeld:
code:
1
2
3
4
| static class Reference { public static Form2 staticForm2 = null; } |
code:
1
2
| Form2 constructor Reference.staticForm2 = this; |
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| Form1: private void button_Click(object sender, EventArgs e) { //Create form instance and show when: //1. Form2 has never been used or //2. Form2 has been used but not visible now. if (Reference.staticForm2 == null || Reference.staticForm2.Visible == false) { Form2 form2 = new Form2(); form2.Show(); } //If an instance is currently visible, hide the instance and create a new instance (reinitialize) + show. else { Reference.staticForm2.Hide(); Form2 form2 = new Form2(); form2.Show(); } } |
In het geval dat de else wordt doorlopen, wordt de huidige instance (1) gehide, een nieuwe instance aangemaakt (2), en aan de variable staticForm2 toegewezen. Wordt instance (1) nu automatisch opgeruimd door NET omdat er geen referenties meer zijn naar het object (staticForm2 verwijst niet meer naar deze instance)?
Dit is volgens mij ook van toepassing als Reference.staticForm2.Visible false is.