.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");
}