C# में डिफ़ॉल्ट कंस्ट्रक्टर
डिफ़ॉल्ट कंस्ट्रक्टर एक **पैरामीटरलेस** कंस्ट्रक्टर है (public ClassName())। यदि क्लास में कोई कंस्ट्रक्टर परिभाषित नहीं है, तो कंपाइलर स्वचालित रूप से एक पब्लिक डिफ़ॉल्ट कंस्ट्रक्टर जनरेट करता है जो सभी फील्ड्स को उनके डिफ़ॉल्ट मानों (0, null, false) पर इनिशियलाइज़ करता है।
विशेषताएं
- कोई पैरामीटर नहीं लेता।
- ऑब्जेक्ट निर्माण पर स्वचालित रूप से आह्वान किया जाता है:
new ClassName()। - फील्ड्स को डिफ़ॉल्ट मानों पर इनिशियलाइज़ करता है।
- कस्टम इनिशियलाइज़ेशन लॉजिक जोड़ने के लिए ओवरराइड किया जा सकता है।
उदाहरण: कस्टम डिफ़ॉल्ट कंस्ट्रक्टर
using System;
public class Department {
public string Name { get; set; }
public int EmployeeCount { get; set; }
// कस्टम डिफ़ॉल्ट कंस्ट्रक्टर
public Department() {
Console.WriteLine("Constructor Invoked");
Name = "General";
EmployeeCount = 0;
}
}
class Program {
static void Main() {
// ऑब्जेक्ट बनाते ही कंस्ट्रक्टर चलता है
Department dept = new Department();
Console.WriteLine($"Dept: {dept.Name}, Employees: {dept.EmployeeCount}");
}
}
आउटपुट
Constructor Invoked Dept: General, Employees: 0
महत्वपूर्ण नियम
- यदि आप कोई कंस्ट्रक्टर परिभाषित करते हैं (पैरामीटराइज़्ड सहित), कंपाइलर **डिफ़ॉल्ट कंस्ट्रक्टर जनरेट नहीं करता**। आपको मैन्युअलली लिखना होगा यदि चाहिए।
structमें डिफ़ॉल्ट कंस्ट्रक्टर **नहीं** लिख सकते (हमेशा पैरामीटरलेस डिफ़ॉल्ट होता है जो जीरो-इनिशियलाइज़ करता है)।staticकंस्ट्रक्टर अलग होता है (टाइप इनिशियलाइज़ेशन के लिए, पैरामीटरलेस,staticकीवर्ड के साथ)।
डिफ़ॉल्ट कंस्ट्रक्टर न होने का उदाहरण
class Person {
public Person(string name) { } // केवल पैरामीटराइज़्ड
}
Person p = new Person(); // कंपाइल एरर: कोई पैरामीटरलेस कंस्ट्रक्टर नहीं
ऑब्जेक्ट इनिशियलाइज़र सिंटैक्स (C# 3+)
डिफ़ॉल्ट कंस्ट्रक्टर के बाद प्रॉपर्टीज सेट करने का संक्षिप्त तरीका:
var dept = new Department { Name = "IT", EmployeeCount = 50 };
यह डिफ़ॉल्ट कंस्ट्रक्टर कॉल करता है फिर प्रॉपर्टीज असाइन करता है।