C# में टाइप चेकिंग: typeof, GetType() या is — कब और क्या उपयोग करें?
सभी को नमस्ते। मैं एक शुरुआती C# डेवलपर हूँ और टाइप चेकिंग में लगातार भ्रमित हो जाता हूँ। तीन तरीके हैं: `typeof`, `GetType()` मेथड और `is` ऑपरेटर।
उदाहरण के लिए, मेरे पास यह कोड है:
```csharp
object obj = "Hello";
// विकल्प 1
if (obj.GetType() == typeof(string))
Console.WriteLine("यह GetType के माध्यम से स्ट्रिंग है");
// विकल्प 2
if (obj is string)
Console.WriteLine("यह is के माध्यम से स्ट्रिंग है");
// विकल्प 3
Type t = typeof(string);
```
लगता है तीनों टाइप चेक करते हैं, लेकिन मैं अजीब व्यवहार देखता हूँ। जब मैं nullable टाइप के साथ `is` का उपयोग करता हूँ, तो यह `GetType()` की तरह व्यवहार नहीं करता। उदाहरण के लिए:
```csharp
int? x = 5;
if (x is int) // true
Console.WriteLine("x int है");
if (x.GetType() == typeof(int)) // भी true
Console.WriteLine("x.GetType == typeof(int)");
```
लेकिन अगर x = null है, तो `x is int?` false देता है, और `GetType()` NullReferenceException फेंक देगा।
और एक और बात: मैंने पढ़ा है कि `typeof` केवल कंपाइल टाइम पर टाइप के साथ काम करता है, जबकि `GetTyp