using System;
class Singleton {
private static Singleton _instance;
private int _counter;
private Singleton() {
_instance = null;
this._counter = 0;
}
public static Singleton Instance{
get {
if (_instance == null) _instance = new Singleton();
return _instance;
}
}
public void Increment() {
this._counter++;
Console.WriteLine(this._counter);
}
}
public class Test
{
public static void Main()
{
var first = Singleton.Instance;
first.Increment();
var second = Singleton.Instance;
second.Increment();
}
}
dXNpbmcgU3lzdGVtOwoKY2xhc3MgU2luZ2xldG9uIHsKICAgICAgICBwcml2YXRlIHN0YXRpYyBTaW5nbGV0b24gX2luc3RhbmNlOwogICAgICAgIHByaXZhdGUgaW50IF9jb3VudGVyOwogICAgICAgIHByaXZhdGUgU2luZ2xldG9uKCkgewogICAgICAgICAgICBfaW5zdGFuY2UgPSBudWxsOwogICAgICAgICAgICB0aGlzLl9jb3VudGVyID0gMDsKICAgICAgICB9CgogICAgICAgIHB1YmxpYyBzdGF0aWMgU2luZ2xldG9uIEluc3RhbmNlewogICAgICAgICAgICBnZXQgewogICAgICAgICAgICAgICAgaWYgKF9pbnN0YW5jZSA9PSBudWxsKSBfaW5zdGFuY2UgPSBuZXcgU2luZ2xldG9uKCk7CiAgICAgICAgICAgICAgICByZXR1cm4gX2luc3RhbmNlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgdm9pZCBJbmNyZW1lbnQoKSB7CiAgICAgICAgICAgIHRoaXMuX2NvdW50ZXIrKzsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUodGhpcy5fY291bnRlcik7CiAgICAgICAgfQogICAgfQoKCnB1YmxpYyBjbGFzcyBUZXN0CnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKCQl2YXIgZmlyc3QgPSBTaW5nbGV0b24uSW5zdGFuY2U7CgkJZmlyc3QuSW5jcmVtZW50KCk7CgkJCgkJdmFyIHNlY29uZCA9IFNpbmdsZXRvbi5JbnN0YW5jZTsKCQlzZWNvbmQuSW5jcmVtZW50KCk7Cgl9Cn0=