using statement with IDisposable interface

image_pdfimage_print
   
 
using System;

public class MyValueReport {
    int InstanceNumber;
    public MyValueReport(int InstanceNumber) {
        this.InstanceNumber = InstanceNumber;
        Console.WriteLine(InstanceNumber);
    }
}

public class MyValue : IDisposable {
    int n;
    public MyValue(int n) {
        this.n = n;
        MyValueReport MyReport = new MyValueReport(n);
    }

    public void Dispose() {
        MyValueReport MyReport = new MyValueReport(this.n);
        GC.SuppressFinalize(this); 
    }
    ~MyValue() {
        MyValueReport MyReport = new MyValueReport(this.n);
    }
}

public class Test {
    static void Main() {
        MyValue d1 = new MyValue(1);
        MyValue d2 = new MyValue(2);
        MyValue d3 = new MyValue(3);
        d1 = null;
        using (d3) {
            MyValue d4 = new MyValue(4);
        }
        d2.Dispose();

    }
}