डिक्लेरेशन (घोषणा) और डेफिनिशन (परिभाषा/आरंभीकरण) अलग-अलग अवधारणाएं हैं।
वेरिएबल्स
// डिक्लेरेशन - केवल नाम और टाइप
int x;
// डेफिनिशन/इनिशियलाइजेशन - मान निर्दिष्ट
x = 10;
// संयुक्त
int y = 20;
ऐरे
// डिक्लेरेशन
int[] n;
// इनिशियलाइजेशन - मेमोरी आवंटन
n = new int[10];
// असाइनमेंट - एलिमेंट्स को मान देना
n[0] = 100;
n[1] = 200;
// संयुक्त
int[] arr = new int[5] {1, 2, 3, 4, 5};
मेथड्स
// डिक्लेरेशन (सिग्नेचर केवल)
void MyMethod(int x, string y);
// डेफिनिशन (इम्प्लीमेंटेशन/बॉडी)
void MyMethod(int x, string y) {
Console.WriteLine(x + y);
}
// इंटरफेस में केवल डिक्लेरेशन
interface IExample {
void Method(); // डिक्लेरेशन
}
// क्लास में डेफिनिशन
class Impl : IExample {
public void Method() { } // डेफिनिशन
}
क्लासेस
// फॉरवर्ड डिक्लेरेशन (C# में सीधे नहीं, लेकिन पार्शियल क्लास से समान)
partial class MyClass; // केवल डिक्लेरेशन
// डेफिनिशन
partial class MyClass {
public void Method() { }
}
मुख्य अंतर
| पहलू | डिक्लेरेशन | डेफिनिशन/इनिशियलाइजेशन |
|---|---|---|
| उद्देश्य | नाम और टाइप घोषित | स्टोरेज आवंटित, मान दें |
| मेमोरी | नहीं (रेफरेंस टाइप्स) | हां |
| बारंबारता | एकाधिक (extern, partial) | एक (ODR - One Definition Rule) |
| उदाहरण | int x; | x = 10; या int x = 10; |
नोट: C# में अक्सर डिक्लेरेशन और इनिशियलाइजेशन एक साथ होते हैं।