.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");
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д