Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: b2l в May 10, 2010, 22:49



Титла: Статичен конструктор
Публикувано от: b2l в May 10, 2010, 22:49
Може ли да ми дадете пример за статичен конструктор и кога трябва да се използва. :)


Титла: Re: Статичен конструктор
Публикувано от: tyuio в May 10, 2010, 23:22
C# Static Constructor

A static constructor in C# is a static data initializer. Static constructors allow complex static variable initialization.[1] Static constructors can be called once and call is made implicitly by the run-time right before the first time the class is accessed. Any call to a class (static or constructor call), triggers the static constructor execution. Static constructors are thread safe and are a great way to implement a Singleton pattern. When used in a Generic programming class, static constructors are called on every new generic instantiation one per type (static variables are instantiated as well).
[edit] Static Constructor Example

Код
GeSHi (C#):
  1. public class MyClass
  2. {
  3.  private static int _A;
  4.  
  5.  //normal constructor
  6.  static MyClass()
  7.  {
  8.    _A = 32;
  9.  }
  10.  
  11.  //standard default constructor
  12.  public MyClass()
  13.  {
  14.  
  15.  }
  16. }
  17.  
  18.  

виждал съм нещо подобно и в един урок за рнр 5.3 на скоро. Обаче не съм се заглеждал много много. Помня че нещо извикваха само веднъж но наистина не знам защо. Това ги изчегъртах от едно уини


Титла: Re: Статичен конструктор
Публикувано от: b2l в May 10, 2010, 23:28
@tyuio да си призная и аз го видях това за C#, но исках ако някой може да ми даде пример, дори и да е само с думи, пример за къде може да се използва, разпитах тук-там всички казаха, че може да си напишеш статичен конструктро, но на въпроса "За какво?" никой не ми отговори. Та така реших да питам тука.


Титла: Re: Статичен конструктор
Публикувано от: tyuio в May 10, 2010, 23:40
Там се споменава сънгълтон аз много не си падам по шаблоните за дизайн и ли по точно не ги разбирам, разгледай какъв му е смисъла и може да ти се изясни аз май мога едно видео да ти измъдря от някъде за него.


Титла: Re: Статичен конструктор
Публикувано от: tyuio в May 10, 2010, 23:41
http://nau4i.me/index.php?option=com_content&view=article&id=132:singleton-registri-&catid=44:oop&Itemid=76


Титла: Re: Статичен конструктор
Публикувано от: b2l в May 11, 2010, 00:12
Хмм създава една инстанция на клас...


Титла: Re: Статичен конструктор
Публикувано от: n00b в May 11, 2010, 00:13
Статичния конструктор е threadsafe което е безпорен плюс в разни сложни приложения.

Ето ти и пример.

Ако имаш МТ приложение с 2 треда - единия клиент, другия сървър (примерно четене от RS232 с последващ лог в база от данни и т.н.).

Критичното е че основната нишка ще пуска 2-та треда, но няма никаква гаранция че буфера където ще обменят данни ще е създаден (приемаме че буфера се създава от клиента, а не от основната нишка). Тогава първия който използва буфера - клиетнта или сървъра ще създаде буфера и ще го инициализира.

Примера е малко измислен, но в реалната практика не винаги може да се планира изпълнението на нишките и всичко се слага в основната нишка и после като и видиш инициализацията едни тонове от код за променливите.