public static void Main()
using(new TheVoid.Devoid(new System.Action(()=> System.Console.WriteLine("DevoidPattern"))))
public interface Interface { }
public interface Interface<T> : Interface { T Value { get; } }
const int IntPtrSize = 1 == (((uint)1) << 4) ? 4 : 8;
[System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Sequential, Size = IntPtrSize)]
public struct Void : Interface, Interface<System.Action>
public System.Action Value => m_Action;
public Void(System.Action action) { m_Action = action;}
[System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Sequential, Size = IntPtrSize)]
public Devoid(System.Action action) { m_Action = action; }
public static implicit operator Void(Devoid d) { return new Void(d.m_Action); }
if(null != m_Action) m_Action();
System.Console.WriteLine("Disposed");