using System.Collections.Generic;
using System.Threading.Tasks;
class WrongSingleInstantiation {
public static WrongSingleInstantiation Instance => new();
private WrongSingleInstantiation() {
Console.WriteLine("Creating a new WrongSingleInstantiation ☹");
class CorrectSingleInstantiation {
public static CorrectSingleInstantiation Instance { get; } = new();
private CorrectSingleInstantiation() {
Console.WriteLine("Creating a new CorrectSingleInstantiation 🎉");
static async Task Main(string[] args)
for(var i = 0; i < 100; i++) {
var foo = WrongSingleInstantiation.Instance;
var bar = CorrectSingleInstantiation.Instance;