typeof() ऑपरेटर
- कंपाइल-टाइम ऑपरेटर
- टाइप नाम (क्लास, स्ट्रक्चर, इंटरफेस, एनम, प्रिमिटिव) लेता है
System.Type ऑब्जेक्ट लौटाता है
- इंस्टेंस की आवश्यकता नहीं
Type t1 = typeof(int); // System.Int32
Type t2 = typeof(string); // System.String
Type t3 = typeof(List); // System.Collections.Generic.List`1[System.Int32]
Type t4 = typeof(MyClass); // यूजर-डिफाइंड टाइप
उदाहरण
using System;
class Program {
static void Main() {
Console.WriteLine(typeof(int)); // System.Int32
Console.WriteLine(typeof(byte)); // System.Byte
Console.WriteLine(typeof(string)); // System.String
}
}
आउटपुट
System.Int32
System.Byte
System.String
GetType() मेथड
- रनटाइम मेथड (Object से विरासत में मिला)
- इंस्टेंस पर कॉल किया जाता है
- वास्तविक रनटाइम टाइप लौटाता है (पॉलीमॉर्फिज्म के लिए महत्वपूर्ण)
object obj = "Hello";
Type t = obj.GetType(); // System.String (नहीं object)
int val = 100;
Type t2 = val.GetType(); // System.Int32 (बॉक्सिंग होता है)
उदाहरण
using System;
class Program {
public static void Main() {
object[] values = { (int)100, (long)17111 };
foreach (var value in values) {
Type tp = value.GetType();
if (tp.Equals(typeof(int)))
Console.WriteLine("{0} एक इंटीजर डेटा टाइप है।", value);
else
Console.WriteLine("'{0}' एक int डेटा टाइप नहीं है।", value);
}
}
}
आउटपुट
100 एक इंटीजर डेटा टाइप है।
'17111' एक int डेटा टाइप नहीं है।
मुख्य अंतर
| पहलू | typeof() | GetType() |
| समय | कंपाइल टाइम | रनटाइम |
| आर्गुमेंट | टाइप नाम | इंस्टेंस (this) |
| पॉलीमॉर्फिज्म | नहीं (स्टैटिक टाइप) | हां (रनटाइम टाइप) |
| null पर | लागू नहीं | NullReferenceException |
| उपयोग | टाइप तुलना, रिफ्लेक्शन | रनटाइम टाइप जांच |