using System;
public class Test
{
public static void Main()
{
var sss = new MyStruct();
sss.Value = "Original";
Console.WriteLine("Initial value: {0}", sss.Value); // Original
using (sss)
{
sss.Value = "Changed";
Console.WriteLine("In using: {0}", sss.Value); // Changed
}
Console.WriteLine("Outside using: {0}", sss.Value); // Changed
}
}
public struct MyStruct : IDisposable
{
public string Value;
public void Dispose()
{
Console.WriteLine("During dispose: {0}", Value); // Original
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCXZhciBzc3MgPSBuZXcgTXlTdHJ1Y3QoKTsKCQlzc3MuVmFsdWUgPSAiT3JpZ2luYWwiOwoKCQlDb25zb2xlLldyaXRlTGluZSgiSW5pdGlhbCB2YWx1ZTogezB9Iiwgc3NzLlZhbHVlKTsgLy8gT3JpZ2luYWwKCQkKCQl1c2luZyAoc3NzKQoJCXsKCQkJc3NzLlZhbHVlID0gIkNoYW5nZWQiOwoJCSAgICBDb25zb2xlLldyaXRlTGluZSgiSW4gdXNpbmc6IHswfSIsIHNzcy5WYWx1ZSk7IC8vIENoYW5nZWQKCQl9CgkJCgkJQ29uc29sZS5Xcml0ZUxpbmUoIk91dHNpZGUgdXNpbmc6IHswfSIsIHNzcy5WYWx1ZSk7IC8vIENoYW5nZWQKCX0KfQoKcHVibGljIHN0cnVjdCBNeVN0cnVjdCA6IElEaXNwb3NhYmxlCnsKCXB1YmxpYyBzdHJpbmcgVmFsdWU7CgoJcHVibGljIHZvaWQgRGlzcG9zZSgpCgl7CgkgICAgQ29uc29sZS5Xcml0ZUxpbmUoIkR1cmluZyBkaXNwb3NlOiB7MH0iLCBWYWx1ZSk7IC8vIE9yaWdpbmFsCgl9Cn0KCg==