using System;
public class Q : IDisposable
{
private string str;
// также класс имеет объект типа sqlConnection(), чтобы был метод Dispose()
bool disposed = false;
public Q()
{
str = "Hello!";
}
public string Str
{
set
{
str = value;
}
get
{
return str;
}
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (disposed)
return;
if (disposing) {
Console.WriteLine(" - disposing - ");
// здесь мы вызываем Dispose объекта класса sqlConnection()
str = null; // без этого мы два раза получим Hello!
// нужно присваивать null? <= ВОПРОС
}
disposed = true;
}
}
public class Test
{
public static void Main()
{
Q q = new Q();
string s = q.Str;
Console.WriteLine("{0}", s);
q.Dispose();
string s1 = q.Str;
Console.WriteLine("{0}", s1);
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIFEgOiBJRGlzcG9zYWJsZQp7Cglwcml2YXRlIHN0cmluZyBzdHI7CgkvLyDRgtCw0LrQttC1INC60LvQsNGB0YEg0LjQvNC10LXRgiDQvtCx0YrQtdC60YIg0YLQuNC/0LAgc3FsQ29ubmVjdGlvbigpLCDRh9GC0L7QsdGLINCx0YvQuyDQvNC10YLQvtC0IERpc3Bvc2UoKSAKCQoJYm9vbCBkaXNwb3NlZCA9IGZhbHNlOwoJCglwdWJsaWMgUSgpIAoJewoJCXN0ciA9ICJIZWxsbyEiOwoJfQoJCglwdWJsaWMgc3RyaW5nIFN0cgoJewoJCXNldAoJCXsKCQkJc3RyID0gdmFsdWU7CgkJfQoJCWdldAoJCXsKCQkJcmV0dXJuIHN0cjsKCQl9Cgl9CglwdWJsaWMgdm9pZCBEaXNwb3NlKCkKICAgeyAKICAgICAgRGlzcG9zZSh0cnVlKTsKICAgICAgR0MuU3VwcHJlc3NGaW5hbGl6ZSh0aGlzKTsgICAgICAgICAgIAogICB9CgogICBwcm90ZWN0ZWQgdmlydHVhbCB2b2lkIERpc3Bvc2UoYm9vbCBkaXNwb3NpbmcpCiAgIHsKICAgICAgaWYgKGRpc3Bvc2VkKQogICAgICAgICByZXR1cm47IAoKICAgICAgaWYgKGRpc3Bvc2luZykgewogICAgICAJQ29uc29sZS5Xcml0ZUxpbmUoIiAtIGRpc3Bvc2luZyAtICIpOwogICAgICAJCiAgICAgIAkvLyDQt9C00LXRgdGMINC80Ysg0LLRi9C30YvQstCw0LXQvCBEaXNwb3NlINC+0LHRitC10LrRgtCwINC60LvQsNGB0YHQsCBzcWxDb25uZWN0aW9uKCkgIAogICAgICAgIAogICAgICAgIHN0ciA9IG51bGw7IC8vINCx0LXQtyDRjdGC0L7Qs9C+INC80Ysg0LTQstCwINGA0LDQt9CwINC/0L7Qu9GD0YfQuNC8IEhlbGxvIQogICAgICAgICAgICAgICAgICAgIC8vINC90YPQttC90L4g0L/RgNC40YHQstCw0LjQstCw0YLRjCBudWxsPyA8PSDQktCe0J/QoNCe0KEKICAgICAgfQogICAgICBkaXNwb3NlZCA9IHRydWU7CiAgIH0KfQoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCVEgcSA9IG5ldyBRKCk7CgkJc3RyaW5nIHMgPSBxLlN0cjsKCQlDb25zb2xlLldyaXRlTGluZSgiezB9Iiwgcyk7CgkJcS5EaXNwb3NlKCk7CgkJc3RyaW5nIHMxID0gcS5TdHI7CgkJQ29uc29sZS5Xcml0ZUxpbmUoInswfSIsIHMxKTsKCQkKCX0KfQ==