Sobes.tech
Junior — Middle

Πώς μπορεί να δημιουργηθεί μια κλάση που εγγυάται την ύπαρξη μόνο ενός αντίγραφου και παρέχει μια παγκόσμια πρόσβαση σε αυτό;

sobes.tech AI

Απάντηση από AI

Для создания класса с гарантией единственного экземпляра (паттерн Singleton) в C# обычно используют приватный конструктор и статическое поле, хранящее единственный экземпляр. Глобальный доступ обеспечивается через статическое свойство или метод. Пример реализации:

public sealed class Singleton
{
    private static readonly Singleton _instance = new Singleton();

    // Приватный конструктор запрещает создание экземпляров извне
    private Singleton() { }

    public static Singleton Instance
    {
        get
        {
            return _instance;
        }
    }
}

Такой подход гарантирует, что экземпляр создается один раз при загрузке класса (ленивая инициализация не используется). Для ленивой инициализации можно использовать Lazy<T> или блокировку (lock).