using System;
public interface IMyInterface1 : IDisposable
{
void DoSomething();
}
public interface IMyInterface2 : IDisposable
{
void DoSomethingElse();
}
public class MyClass : IMyInterface1, IMyInterface2
{
public void DoSomething() { Console.WriteLine("I'm doing something..."); }
public void DoSomethingElse() { Console.WriteLine("I'm doing something else..."); }
public void Dispose() { Console.WriteLine("Bye bye!"); }
}
class Program
{
public static void Main(string[] args)
{
using (IMyInterface1 myInterface = new MyClass())
{
myInterface.DoSomething();
}
using (IMyInterface2 myInterface = new MyClass())
{
myInterface.DoSomethingElse();
}
using (MyClass myClass = new MyClass())
{
myClass.DoSomething();
}
using (var myClass = new MyClass())
{
myClass.DoSomething();
}
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGludGVyZmFjZSBJTXlJbnRlcmZhY2UxIDogSURpc3Bvc2FibGUKewogICAgdm9pZCBEb1NvbWV0aGluZygpOwp9CgpwdWJsaWMgaW50ZXJmYWNlIElNeUludGVyZmFjZTIgOiBJRGlzcG9zYWJsZQp7CiAgICB2b2lkIERvU29tZXRoaW5nRWxzZSgpOwp9CgpwdWJsaWMgY2xhc3MgTXlDbGFzcyA6IElNeUludGVyZmFjZTEsIElNeUludGVyZmFjZTIKewogICAgcHVibGljIHZvaWQgRG9Tb21ldGhpbmcoKSB7IENvbnNvbGUuV3JpdGVMaW5lKCJJJ20gZG9pbmcgc29tZXRoaW5nLi4uIik7IH0KICAgIHB1YmxpYyB2b2lkIERvU29tZXRoaW5nRWxzZSgpIHsgQ29uc29sZS5Xcml0ZUxpbmUoIkknbSBkb2luZyBzb21ldGhpbmcgZWxzZS4uLiIpOyB9CiAgICBwdWJsaWMgdm9pZCBEaXNwb3NlKCkgeyBDb25zb2xlLldyaXRlTGluZSgiQnllIGJ5ZSEiKTsgfQp9CgpjbGFzcyBQcm9ncmFtCnsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKHN0cmluZ1tdIGFyZ3MpCiAgICB7CiAgICAgICAgdXNpbmcgKElNeUludGVyZmFjZTEgbXlJbnRlcmZhY2UgPSBuZXcgTXlDbGFzcygpKQogICAgICAgIHsKICAgICAgICAgICAgbXlJbnRlcmZhY2UuRG9Tb21ldGhpbmcoKTsKICAgICAgICB9CgogICAgICAgIHVzaW5nIChJTXlJbnRlcmZhY2UyIG15SW50ZXJmYWNlID0gbmV3IE15Q2xhc3MoKSkKICAgICAgICB7CiAgICAgICAgICAgIG15SW50ZXJmYWNlLkRvU29tZXRoaW5nRWxzZSgpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICB1c2luZyAoTXlDbGFzcyBteUNsYXNzID0gbmV3IE15Q2xhc3MoKSkKICAgICAgICB7CiAgICAgICAgICAgIG15Q2xhc3MuRG9Tb21ldGhpbmcoKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgdXNpbmcgKHZhciBteUNsYXNzID0gbmV3IE15Q2xhc3MoKSkKICAgICAgICB7CiAgICAgICAgICAgIG15Q2xhc3MuRG9Tb21ldGhpbmcoKTsKICAgICAgICB9CiAgICB9Cn0K