Avatar ·

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