कंस्ट्रक्टर ऑब्जेक्ट बनने पर स्वचालित रूप से आह्वान होता है। इसका नाम क्लास के समान होता है, कोई रिटर्न टाइप नहीं।
डिफ़ॉल्ट कंस्ट्रक्टर
- **कोई पैरामीटर नहीं** लेता।
- यदि कोई कंस्ट्रक्टर परिभाषित न किया जाए, कंपाइलर **पैरामीटरलेस डिफ़ॉल्ट कंस्ट्रक्टर** जनरेट करता है (सभी फील्ड्स को डिफ़ॉल्ट मान पर इनिशियलाइज़ करता है)।
- यदि कोई पैरामीटर वाला कंस्ट्रक्टर परिभाषित किया जाए, **डिफ़ॉल्ट कंस्ट्रक्टर जनरेट नहीं होता** (यदि चाहिए तो स्पष्ट रूप से लिखें)।
उदाहरण
using System;
public class Department
{
public Department()
{
Console.WriteLine("कंस्ट्रक्टर आह्वान हुआ");
}
public static void Main(string[] args)
{
Department dept1 = new Department(); // कंस्ट्रक्टर यहां चलता है
}
}
आउटपुट
कंस्ट्रक्टर आह्वान हुआ
महत्वपूर्ण नियम
structके लिए: पैरामीटरलेस कंस्ट्रक्टर **नहीं** लिख सकते (C# 10 से पहले); फील्ड्स स्वचालित रूप से 0/null होते हैं।recordटाइप्स में प्राइमरी कंस्ट्रक्टर होता है।- स्टैटिक कंस्ट्रक्टर (
static ClassName()) स्टैटिक फील्ड्स इनिशियलाइज़ करता है, पैरामीटर नहीं लेता।
कंस्ट्रक्टर चेनिंग
public class Person
{
public string Name { get; }
public int Age { get; }
public Person() : this("Unknown", 0) { } // डिफ़ॉल्ट → पैरामीटर वाला
public Person(string name) : this(name, 0) { }
public Person(string name, int age)
{
Name = name;
Age = age;
}
}