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

C# में वर्तमान टाइप के फील्ड्स प्राप्त करना (GetFields)

Type.GetFields() मेथड (System.Reflection) वर्तमान टाइप के फील्ड्स का ऐरे लौटाता है। बाइंडिंग फ्लैग्स (BindingFlags) का उपयोग करके पब्लिक, नॉन-पब्लिक, स्टैटिक, इंस्टेंस फील्ड्स को फ़िल्टर किया जा सकता है।

उदाहरण 1: System.String के नॉन-पब्लिक स्टैटिक फील्ड्स

using System;
using System.Reflection;

public class Demo {
    public static void Main() {
        Type type = typeof(string);
        
        // नॉन-पब्लिक स्टैटिक फील्ड्स प्राप्त करें
        FieldInfo[] fields = type.GetFields(BindingFlags.Static | BindingFlags.NonPublic);
        
        Console.WriteLine("नॉन-पब्लिक स्टैटिक फील्ड्स:");
        foreach (FieldInfo field in fields) {
            Console.WriteLine(field.ToString());
        }
    }
}

आउटपुट

नॉन-पब्लिक स्टैटिक फील्ड्स:
Int32 TrimHead
Int32 TrimTail
Int32 TrimBoth
Int32 charPtrAlignConst
Int32 alignConst

उदाहरण 2: System.Char के नॉन-पब्लिक स्टैटिक फील्ड्स

using System;
using System.Reflection;

public class Demo {
    public static void Main() {
        Type type = typeof(char);
        
        FieldInfo[] fields = type.GetFields(BindingFlags.Static | BindingFlags.NonPublic);
        
        Console.WriteLine("\nChar के नॉन-पब्लिक स्टैटिक फील्ड्स:");
        foreach (FieldInfo field in fields) {
            Console.WriteLine(field.ToString());
        }
    }
}

आउटपुट

Char के नॉन-पब्लिक स्टैटिक फील्ड्स:
Byte[] categoryForLatin1
Int32 UNICODE_PLANE00_END
Int32 UNICODE_PLANE01_START
Int32 UNICODE_PLANE16_END
Int32 HIGH_SURROGATE_START
Int32 LOW_SURROGATE_END

BindingFlags विकल्प

फ्लैगविवरण
Publicपब्लिक फील्ड्स शामिल करें
NonPublicनॉन-पब्लिक (प्राइवेट, प्रोटेक्टेड, इंटरनल) शामिल करें
Staticस्टैटिक फील्ड्स शामिल करें
Instanceइंस्टेंस फील्ड्स शामिल करें
DeclaredOnlyकेवल वर्तमान टाइप में घोषित (विरासत में नहीं)

सामान्य संयोजन

// सभी पब्लिक फील्ड्स (स्टैटिक + इंस्टेंस)
type.GetFields(BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance);

// सभी इंस्टेंस फील्ड्स (पब्लिक + नॉन-पब्लिक)
type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);

// केवल वर्तमान क्लास में घोषित पब्लिक इंस्टेंस फील्ड्स
type.GetFields(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);

FieldInfo मुख्य प्रॉपर्टीज़

  • Name - फील्ड नाम
  • FieldType - फील्ड का टाइप
  • IsPublic, IsPrivate, IsStatic, IsInitOnly (readonly), IsLiteral (const)
  • GetValue(obj) - इंस्टेंस से फील्ड वैल्यू पढ़ें
  • SetValue(obj, value) - इंस्टेंस पर फील्ड वैल्यू सेट करें

कस्टम क्लास उदाहरण

public class Person {
    public string Name;           // पब्लिक इंस्टेंस
    private int age;              // प्राइवेट इंस्टेंस
    public const string Species = "Human"; // पब्लिक लिटरल (स्टैटिक)
    private static int count;     // प्राइवेट स्टैटिक
}

// उपयोग:
Type t = typeof(Person);
var publicFields = t.GetFields(BindingFlags.Public | BindingFlags.Instance);
// Name, Species
var allFields = t.GetFields(BindingFlags.Public | BindingFlags.NonPublic | 
                            BindingFlags.Static | BindingFlags.Instance);
// सभी 4 फील्ड्स

नोट

रिफ्लेक्शन धीमा होता है - प्रदर्शन-महत्वपूर्ण कोड में कैशिंग या डायनामिक मेथड्स/एक्सप्रेशन ट्रीज़ उपयोग करें।

  1. - C# में वर्तमान एन्यूमरेशन प्रकार के सदस्यों के नाम प्राप्त करें

    Type.GetEnumNames() मेथड एन्यूमरेशन स्थिरांक के नामों का एक सरणी लौटाता है। यह केवल एनम प्रकारों पर काम करता है; अन्यथा ArgumentException फेंकता है। उदाहरण 1: गैर-एनम प्रकार (string) using System; public class Demo { enum Vehicle { Car, Bus, Bike } public static void Main() { tr

  1. - C# में वर्तमान इंस्टेंस का प्रकार प्राप्त करें

    C# में किसी ऑब्जेक्ट के वर्तमान इंस्टेंस का प्रकार प्राप्त करने के लिए, हम GetType() मेथड का उपयोग करते हैं। यह मेथड System.Object से विरासत में मिला है और ऑब्जेक्ट के रनटाइम प्रकार को दर्शाने वाला Type ऑब्जेक्ट लौटाता है। यह रिफ्लेक्शन और डिबगिंग के लिए उपयोगी है। उदाहरण 1: स्ट्रिंग का प्रकार प्र

  1. - C# में Enum.GetType(): एन्यूमरेशन का प्रकार प्राप्त करना

    GetType() मेथड किसी भी ऑब्जेक्ट का रनटाइम टाइप लौटाता है। एनम मानों पर उपयोग करके उनका एन्यूमरेशन टाइप और अंतर्निहित टाइप जान सकते हैं। उदाहरण using System; public class Demo { public static void Main() { Enum[] values = { ConsoleColor.Blue, DayOfWeek.Sunday }; Co