Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
-32 / 0 / 4
Регистрация: 09.04.2016
Сообщений: 29

Изучение Singleton

22.02.2017, 11:38. Показов 1368. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день я вот начинаю практиковать "Singleton"

Как этот Singleton
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    public sealed class Singleton
    {
        private static volatile Singleton instance;
        private static object syncRoot = new Object();
 
        private Singleton() { }
 
        public static Singleton Instance
        {
            get
            {
                if (instance == null)
                {
                    lock (syncRoot)
                    {
                        if (instance == null)
                            instance = new Singleton();
                    }
                }
                return instance;
            }
        }
    }
Прикрутить к классу "Example"

C#
1
2
3
4
5
6
7
    public class Example
    {
        public void hello(string text)
        {
            return "hello"+text;
        }
    }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.02.2017, 11:38
Ответы с готовыми решениями:

Реализация Singleton
Добрый день, увидел очень странную для себя реализация паттерна Singleton. public sealed class Singleton { ...

Static Singleton
Доброго времени суток, помогите пожалуйста, даже незнаю с чего начать, задача звучит так: Создавайте приложение, которое позволяет...

Singleton pattern
Подскажите пожалуйста откудо можно прочесть про Singleton pattern (желательно на русском).

2
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
22.02.2017, 12:13
Цитата Сообщение от MasterWord Посмотреть сообщение
Как этот Singleton Прикрутить к классу "Example"
А что вы подразумеваете под "прикрутить"?
Сделать класс Example тоже синглтоном?
Или как-то использовать клас Singleton в классе Example? Как?

Добавлено через 3 минуты
Кстати, если вы пишете под .NET 4.0 и выше, то синглтон проще (и правильнее) можно реализовать так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    public sealed class Singleton
    {
        private static readonly Lazy<Singleton> instance = new Lazy<Singleton>(() => new Singleton());
 
        private Singleton() { }
 
        public static Singleton Instance
        {
            get
            {
                return instance.Value;
            }
        }
    }
1
-32 / 0 / 4
Регистрация: 09.04.2016
Сообщений: 29
22.02.2017, 12:19  [ТС]
kolorotur, Ну да извиняюсь, просто я недавно начал изучать сам язык C#.

Я хотел сделать так:

Singleton - Сделать как отдельный класс который я хотел подключить примерно так

C#
1
class Example : Singleton {}
Поискал в интернете и решил в результате сделать так

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 public sealed class Example
    {
        private static volatile Exampleinstance;
        private static object syncRoot = new Object();
 
        private Example() { }
 
        public static Example Instance
        {
            get
            {
                if (instance == null)
                {
                    lock (syncRoot)
                    {
                        if (instance == null)
                            instance = new Example();
                    }
                }
                return instance;
            }
        }
     
      public void hello(string text)
        {
            return "hello"+text;
        }
    }
Вывод

C#
1
Example.Instance.hello("world");
Хочу спросить, правильно ли я сделал или можно как та по другому еще.

Добавлено через 1 минуту
kolorotur,

Я нашел 3 вида Singleton

1 Шаблон
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public sealed class Singleton
    {
        private static volatile Singleton instance;
        private static object syncRoot = new Object();
 
        private Singleton() { }
 
        public static Singleton Instance
        {
            get
            {
                if (instance == null)
                {
                    lock (syncRoot)
                    {
                        if (instance == null)
                            instance = new Singleton();
                    }
                }
                return instance;
            }
        }
    }
2 Шаблон Nested
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 public sealed class NestedSingleton
    {
        private NestedSingleton()
        {
        }
 
        public static NestedSingleton Instance { get { return Nested.instance; } }
 
        private class Nested
        {
            static Nested()
            {
            }
 
            internal static readonly NestedSingleton instance = new NestedSingleton();
        }
    }
3 Шаблон
C#
1
2
3
4
5
6
7
8
9
10
11
    public sealed class LazySingleton
    {
        private static readonly Lazy<LazySingleton> lazy =
            new Lazy<LazySingleton>(() => new LazySingleton());
 
        public static LazySingleton Instance { get { return lazy.Value; } }
 
        private LazySingleton()
        {
        }
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.02.2017, 12:19
Помогаю со студенческими работами здесь

Паттерн singleton
Показать, что стратегия работает на языке С#. Выручайте ребят, буду благодарна))

Паттерн SingleTon
Прошу привести какой-то пример (с комментами), чтобы я разобрался что это такое и с чем его едят. И как его можно применять...? (ЗЫ гуглил...

Зачем Lazy<T> в Singleton?
Зачем здесь отложенная реализация, если в обоих вариантах объект создается только при явном вызове синглтона? class LazySingleton { ...

Одновременное обращение к ApplicationContext в классе Singleton из нескольких потоков
Возникла проблема, в том что _context уже используется. ApplicationContext _context ApplicationContext :...

Public static Singleton getInstance() что значит эта строчка?
Всё понятно из заголовка. :)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru