public struct AllTheSame<T> {
public Func<T> initializer;
public AllTheSame( Func<T> initializer ) => this.initializer = initializer;
public void Deconstruct (out T first) {
public void Deconstruct (out T first, out T second) {
public void Deconstruct (out T first, out T second, out T third) {
public void Deconstruct (out T first, out T second, out T third, out T fourth) {
public void Deconstruct (out T first, out T second, out T third, out T fourth, out T fifth) {
public string id = Guid.NewGuid().ToString();
public static void Main()
(a, b, c, d, e) = new AllTheSame<MyClass>( () => new MyClass() );
Console.WriteLine($"Hello World\n\t{string.Join("\n\t", new MyClass[] {a, b, c, d, e}.Select(c => c.id))}");