Что такое Instance в C#?

334
14 февраля 2017, 17:06

Недавно начал баловаться с unity, стал смотреть примеры скриптов и наткнулся на такую конструкцию:

public class MakeFX : MonoBehaviour
{
    private static MakeFX instance;
    public static MakeFX Instance
    {
        get
        {
            if (instance == null)
                instance = GameObject.FindObjectOfType<MakeFX>();
            return instance;
        }
    }
    ... 
}

После С++ для меня такая конструкция выглядит странно. Погуглив справку в msdn лучше не стало. Объясните, что это такое и зачем оно надо.

Answer 1

С точки зрения языка C# - это самое обычное имя свойства. С английского языка это слово переводится как "экземпляр".

Чаще всего подобное статическое свойство можно встретить при реализации шаблона проектирования (паттерна) "Одиночка" (Singleton).

Отмечу, что приведенный вами код не является канонической реализацией, поскольку единственный экземпляр класса создается кем-то снаружи, а не изнутри.

Answer 2

Это просто имя свойства, в данном случае переводится как "экземпляр". Просто так принято называть некоторые статические поля, особенно при реализации паттерна синглтон.

READ ALSO
Как сохранить изменения в БД после редактирования Datagridview?

Как сохранить изменения в БД после редактирования Datagridview?

Имеется DataGridView данные в него подтягиваются в коде нижеКак мне реализовать сохранение изменений из DGV в БД по нажатию на кнопку ?

503
Следует ли использовать SuppressFinalize?

Следует ли использовать SuppressFinalize?

Хотел бы спросить про такой паттерн использования SuppressFinalizeДопустим, у меня имеется объект Foo, который хранит в себе какой-нибудь ресурс

305
Удаление строк в datagridview выделением сверху вниз и наоборот

Удаление строк в datagridview выделением сверху вниз и наоборот

Сегодня во время работы с DataGridView,заметил странную особенностьСтояла задача удаления огромного количества строк(Почти 20000) вместе,получив...

306
Парсинг JSON в DropDownList ASP.NET

Парсинг JSON в DropDownList ASP.NET

Привет есть кодКонтролер

315