using System;
public class MySingletonedObject
{
private static object me = new object();
private int customData;
private static MySingletonedObject sinobj;
public static MySingletonedObject GetSingleton(int data)
{
lock (me)
{
if (sinobj == null)
{
sinobj = new MySingletonedObject(data);
}
}
return sinobj;
}
public MySingletonedObject(int newData)
{
customData = newData;
}
public void Print()
{
Console.WriteLine(customData.ToString());
}
}
public class Test
{
public static void Main()
{
MySingletonedObject.GetSingleton(1).Print();
MySingletonedObject.GetSingleton(6).Print();
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIE15U2luZ2xldG9uZWRPYmplY3QgCnsKCXByaXZhdGUgc3RhdGljIG9iamVjdCBtZSA9IG5ldyBvYmplY3QoKTsKCXByaXZhdGUgaW50IGN1c3RvbURhdGE7Cglwcml2YXRlIHN0YXRpYyBNeVNpbmdsZXRvbmVkT2JqZWN0IHNpbm9iajsKCXB1YmxpYyBzdGF0aWMgTXlTaW5nbGV0b25lZE9iamVjdCBHZXRTaW5nbGV0b24oaW50IGRhdGEpCgl7CgkJbG9jayAobWUpCgkJewoJCQlpZiAoc2lub2JqID09IG51bGwpCgkJCXsKCQkJCXNpbm9iaiA9IG5ldyBNeVNpbmdsZXRvbmVkT2JqZWN0KGRhdGEpOwoJCQl9CgkJfQoJCXJldHVybiBzaW5vYmo7Cgl9CgoJcHVibGljIE15U2luZ2xldG9uZWRPYmplY3QoaW50IG5ld0RhdGEpCgl7CgkJY3VzdG9tRGF0YSA9IG5ld0RhdGE7Cgl9CgkKCXB1YmxpYyB2b2lkIFByaW50KCkKCXsKCQlDb25zb2xlLldyaXRlTGluZShjdXN0b21EYXRhLlRvU3RyaW5nKCkpOwoJfQp9CgpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJTXlTaW5nbGV0b25lZE9iamVjdC5HZXRTaW5nbGV0b24oMSkuUHJpbnQoKTsKCQlNeVNpbmdsZXRvbmVkT2JqZWN0LkdldFNpbmdsZXRvbig2KS5QcmludCgpOwoJfQp9