C# में टाइप चेकिंग: typeof, GetType() या is? कब क्या उपयोग करें?
सभी को नमस्कार! मैं एक शुरुआती C# डेवलपर हूँ और C# में टाइप चेकिंग को समझ नहीं पा रहा हूँ। तीन तरीके हैं: `typeof` ऑपरेटर, `GetType()` मेथड और `is` ऑपरेटर। लेकिन कब क्या उपयोग करें?
यहाँ एक उदाहरण है जो मुझे भ्रमित करता है:
```csharp
object obj = "Hello, world!";
// तरीका 1
if (obj.GetType() == typeof(string))
Console.WriteLine("यह एक स्ट्रिंग है (GetType)");
// तरीका 2
if (obj is string)
Console.WriteLine("यह एक स्ट्रिंग है (is)");
// तरीका 3
Type t = typeof(string);
if (obj.GetType() == t)
Console.WriteLine("यह एक स्ट्रिंग है (typeof)");
```
तीनों विकल्प काम करते हैं, लेकिन मुझे लगता है कि ये एक-दूसरे के बदले उपयोग नहीं किए जा सकते। उदाहरण के लिए, मैंने सुना है कि `typeof` केवल कंपाइल टाइम पर टाइप के साथ काम करता है, जबकि `GetType()` रन टाइम पर। और `is` कुछ जादुई है—यह जाँच भी करता है और टाइप कास्ट भी करता है।
कृपया बताएं:
1. `typeof`, `GetType()` और `is` के बीच मूलभूत अंतर क्या है?
2. कब क्या उपयोग करें ताकि कोड सही हो?