.NET 4.x Using классы передавать в метод с ref или без - C#
Формулировка задачи:
Доброй ночи. Закроется ли к примеру StreamWriter в методе, который мы ему передаем или нужно дописывать Close(); там откуда мы вызывали метод. Более понятно будет кодом.
Закроется ли StreamWriter и не будет висеть в куче/памяти...
Или нужно вызывать sw.Close() где комментарий.
Если так, то ref решит проблему?
и если решит можно ли тогда делать вот так
private void button2_Click(object sender, EventArgs e) { StreamWriter sw = new StreamWriter("test.txt"); sw.WriteLine("one"); Write(sw); // да или нет? sw.Close(); } private void Write(StreamWriter sw) { sw.WriteLine("two"); sw.Close(); // тут же мы закрывает копию sw, а в методе вызывающем он висит? }
private void button2_Click(object sender, EventArgs e) { StreamWriter sw = new StreamWriter("test.txt"); sw.WriteLine("one"); Write(sw); } private void Write(ref StreamWriter sw) { sw.WriteLine("two"); sw.Close();
private void button2_Click(object sender, EventArgs e) { StreamWriter sw = new StreamWriter("test.txt"); sw.WriteLine("one"); Write1(sw); sw.Close(); // тут гасим везде, ведь мы не копию передавали. } private void Write1(ref StreamWriter sw) { sw.WriteLine("1"); Write2(ref sw); } private void Write2(ref StreamWriter sw) { sw.WriteLine("2"); Write2(ref sw); } private void Write3(ref StreamWriter sw) { sw.WriteLine("3"); Write2(ref sw); }
Решение задачи: «.NET 4.x Using классы передавать в метод с ref или без»
textual
Листинг программы
private void button2_Click(object sender, EventArgs e) { using(StreamWriter sw = new StreamWriter("test.txt")) { sw.WriteLine("one"); Write(sw); } } private void Write(StreamWriter sw) { sw.WriteLine("two"); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д