السلام عليكــم ورحمـة الله وبركاتــه ،،
سنقوم بإذن الله بشرح ال static Constructors
static Constructors عبارة عن Constructors عادي إلا أنه يأخذ المعرف static
مثال على ذلك
public class Book
{
public static int X;
static Book()//This Is static Constructor
{
Console.WriteLine("static Constructor");
}
public Book()//This Is not static Constructor
{
Console.WriteLine("Non static Constructor");
}
}لماذا ال static Constructor :
نحن نعرف أن ال Constructort العادي يتم استدعائه عند عمل نسخة من الكلاس وذلك كالأتي :
Book book = new Book();
لكن نجد أن ال Constructort العادي لا يتم استدعائه عند تفحص ال static data type التي يحتويها الكلاس مثل المتغير X في المثال الأول وذلك كالتالي :
int X = Book.X;
فمن هنا ظهرت الحاجة إلى ال static Constructor حتى يتمكن المبرمج من معرفة أول استخدام للكلاس سواءا كان هذا الاستخدام عن طريق عمل نسخة من الكلاس أو عن طريق استخدام static data type
أمثلة على السابق شرحه :
إذا كان لدينا الكلاس التالي :
public class Book
{
public static int X;
static Book()//This Is static Constructor
{
Console.WriteLine("static Constructor");
}
public Book()//This Is not static Constructor
{
Console.WriteLine("Non static Constructor");
}
}بين الناتج من الأكواد التالية :
الكود الأول :
static void Main(string[] args)
{
int X = Book.X;
}الكود الثاني :
static void Main(string[] args)
{
Book book = new Book();
}الكود الثالث:
static void Main(string[] args)
{
int X = Book.X;
Book book = new Book();
}ملاحظات على الدرس :
1. يتم استدعاء static Constructor قبل ال Constructor العادي
2. إذا كان الكلاس يرث من كلاس أخر فيتم استدعاء ال Constructors للأب قبل Constructors للإبن على نفس الترتيب في النقطة الأولى
في النهاية أرجو أن أكون قد أفدتكم شيئا ولو يسيرا
بالتوفيق...