Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Глобальный указатель


Автор: ilya_cska 13.4.2008, 05:02
Создаю Form Application c несколькими формами. Есть отдельный public class MyConnect 
Я могу создать для одной формы, например
Код

MyConnect qwe = new MyConnect();

Как создать один глобальный указатель на этот класс(для всех форм)?

Автор: mr.DUDA 13.4.2008, 11:30
Код
class MyConnect
{
    public static MyConnect ГлобальныйУказатель = new MyConnect();
}

...

public class Form1 : Form
{
    public void СделайЧтоНибудь()
    {
        MyConnect.ГлобальныйУказатель.ЧтоНибудь();
    }
}

Автор: jonie 13.4.2008, 13:59
зовется этот паттерн singleton - гугл найдет массу примеров.

Автор: firstone 13.4.2008, 14:03
Цитата(jonie @  13.4.2008,  13:59 Найти цитируемый пост)
зовется этот паттерн singleton - гугл найдет массу примеров.


Наличие только static-поля не превращает класс в singleton. 

Автор: INHazeR 13.4.2008, 16:16
Код

public class MyConnect
{
    MyConnect singleton = null;

    private MyConnect() // конструктор закрыт!
{

}

public MyConnect CreateNewMyConnect()
{
 if (singleton == null)
singleton = new MyConnect();
return singleton;
}

}


вот это - синглтон.
но тут можно и без него обойтись. пользуйтесь статическим классом, вот и все.

Автор: QryStaL 13.4.2008, 16:52
INHazeR, во-первых, было бы неплохо выровнять код. Во-вторых, работать оно не будет.
Вот правильный пример

Код

public class MyConnect    
{    
    private static MyConnect singleton = null;    
    public static MyConnect CreateNewMyConnect()    
    {    
        if (singleton == null)
        {
            singleton = new MyConnect();
        }
        return singleton;    
    }
    private MyConnect() // конструктор закрыт!    
    {    
    }    
}


Но тут он, как правильно уже заметили, не нужен. =)

Автор: jonie 13.4.2008, 19:38
а ну , да конечно.. то что чел описал "не синглетон"...
"а мужики-то и не знали"....

Цитата

Но тут он, как правильно уже заметили, не нужен. =)
руки, наверно, отшибут, если будешь использовать...(табу).

c# съел вам моск.

Автор: QryStaL 13.4.2008, 20:11
jonie, к чему весь этот сарказм? Если есть что сказать по делу - скажите, а то толку от вашего поста - ноль.

Цитата(jonie @  13.4.2008,  19:38 Найти цитируемый пост)
c# съел вам моск.

 smile Высокомерия вам не занимать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)