Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# में typeof() और GetType() में अंतर

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
उपयोगटाइप तुलना, रिफ्लेक्शनरनटाइम टाइप जांच
  1. - C# में कास्ट ऑपरेटर () क्या है?

    टाइप कन्वर्जन एक प्रकार के डेटा को दूसरे प्रकार में बदलना है। एक्सप्लिसिट कन्वर्जन यूजर्स द्वारा प्री-डिफाइन्ड फंक्शन्स का उपयोग करके स्पष्ट रूप से किए जाते हैं और कास्ट ऑपरेटर की आवश्यकता होती है।आइए double को int में कास्ट करने का एक उदाहरण देखें:उदाहरणusing System; namespace Demo { class Prog

  1. - C# में एक्सप्लिसिट टाइप कन्वर्जन (कास्टिंग)

    परिचय एक्सप्लिसिट कन्वर्जन (कास्टिंग) में डेवलपर जानबूझकर एक टाइप को दूसरे में बदलता है, कास्ट ऑपरेटर (Type) का उपयोग करके। यह डेटा हानि (जैसे double से int) या असंगत टाइप्स के कारण आवश्यक होता है। उदाहरण: double से int using System; namespace Demo { class Program { static void Ma

  1. - जावा में रिटर्न टाइप का महत्व?

    रिटर्न स्टेटमेंट प्रोग्राम कंट्रोल को मेथड के कॉलर के पास वापस ट्रांसफर करता है। जावा में हर मेथड एक रिटर्न टाइप के साथ घोषित किया जाता है और यह सभी जावा मेथड्स के लिए अनिवार्य है। रिटर्न टाइप प्रिमिटिव टाइप जैसे int, float, double, एक रेफरेंस टाइप या वॉइड टाइप (कुछ भी नहीं लौटाता) हो सकता है। वाप