C# |类型。GetField()方法

原文:https://www.geeksforgeeks.org/c-sharp-type-getfield-method/

类型。GetField()方法用于获取当前类型的特定字段。此方法的重载列表中有 2 种方法,如下所示:

  • 获取字段(字符串)方法
  • 方法

获取字段(字符串)方法

此方法用于搜索具有指定名称的公共字段。

*语法:*公共系统。反射. FieldInfo GetField(字符串名称); 这里,需要包含数据字段名称的字符串来获取。

*返回值:*该方法返回一个表示具有指定名称的公共字段的对象,否则为空。

*异常:*如果名称为空,该方法抛出 ArgumentNullException

以下程序说明了类型的使用。GetField() 方法:

*例 1:*

// C# program to demonstrate the
// Type.GetField(String) Method
using System;
using System.Globalization;
using System.Reflection;

class GFG {

    // Main Method
    public static void Main()
    {
        // Declaring and initializing object of Type
        Type objType = typeof(Student);

        // try-catch block for handling Exception
        try {

            // Getting FieldInfo by
            // using GetField(String) Method
            FieldInfo info = objType.GetField("Name");

            // Display the Result
            Console.WriteLine("FieldInfo is: {0}", info);
        }

        // catch ArgumentNullException here
        catch (ArgumentNullException e) 
        {
            Console.Write("name is null.");
            Console.Write("Exception Thrown: ");
            Console.Write("{0}", e.GetType(), e.Message);
        }
    }
}

// Defining class Student
public class Student 
{
    public string Name = "Rahul";
    public string Dept = "Electrical";
    public int Roll = 10;
}

**Output:

FieldInfo is: System.String Name

```** 

****示例 2:** 适用于*参数异常***

```cs
// C# program to demonstrate the
// Type.GetField(String) Method
using System;
using System.Globalization;
using System.Reflection;

class GFG {

    // Main Method
    public static void Main()
    {
        // Declaring and initializing object of Type
        Type objType = typeof(Student);

        // try-catch block for handling Exception
        try {

            // Getting FieldInfo by
            // using GetField() Method
            FieldInfo info = objType.GetField(null);

            // Display the Result
            Console.WriteLine("FieldInfo is: {0}", info);
        }

        // catch ArgumentNullException here
        catch (ArgumentNullException e)
        {
            Console.WriteLine("Name is null.");
            Console.Write("Exception Thrown: ");
            Console.Write("{0}", e.GetType(), e.Message);
        }
    }
}

// Defining class Student
public class Student 
{
    public string Name = "Rahul";
    public string Dept = "Electrical";
    public int Roll = 10;
}

**Output:

name is null.
Exception Thrown: System.ArgumentNullException

```** 

#### **方法**

**此方法用于使用指定的绑定约束搜索指定的字段**

> ****语法:**公共抽象系统反射字段信息获取字段(字符串名称系统反射. binding flags binding attr)**
> 
>  ****参数**:
> 
> **名称**:包含要获取的数据字段名称的字符串
> **bindingAttr** :它是一个由一个或多个 BindingFlags 组成的位掩码指定如何进行搜索或者返回 null  Zero**

****返回值:**该方法返回一个对象表示符合指定要求的字段否则为空**

****异常**:如果名称为空该方法抛出**参数为空异常****

**以下程序说明了上述方法的使用:**

**** 1:****

```cs
// C# program to demonstrate the
// Type.GetField(String) Method
using System;
using System.Globalization;
using System.Reflection;

class GFG {

    // Main Method
    public static void Main()
    {
        // Declaring and initializing object of Type
        Type objType = typeof(Student);

        // try-catch block for handling Exception
        try {

            // You must specify either BindingFlags.Instance
            // or BindingFlags.Static
            // and Specify BindingFlags.Public
            // to include public fields in the search
            BindingFlags battr = BindingFlags.Public | BindingFlags.Instance;

            // Getting FieldInfo by
            // using GetField() Method
            FieldInfo info = objType.GetField("Name", battr);

            // Display the Result
            Console.WriteLine("FieldInfo is: {0}", info);
        }

        // catch ArgumentNullException here
        catch (ArgumentNullException e) 
       {
            Console.Write("name is null.");
            Console.Write("Exception Thrown: ");
            Console.Write("{0}", e.GetType(), e.Message);
        }
    }
}

// Defining class Student
public class Student 
{
    public string Name = "Rahul";
    public string Dept = "Electrical";
    public int Roll = 10;
}

**Output:

FieldInfo is: System.String Name

```** 

****示例 2:** 适用于*参数异常***

```cs
// C# program to demonstrate the
// Type.GetField(String) Method
using System;
using System.Globalization;
using System.Reflection;

class GFG {

    // Main Method
    public static void Main()
    {
        // Declaring and initializing object of Type
        Type objType = typeof(Student);

        // try-catch block for handling Exception
        try {

            // You must specify either BindingFlags.Instance 
            // or BindingFlags.Static
            // and Specify BindingFlags.Public
            // to include public fields in the search
            BindingFlags battr = BindingFlags.Public | BindingFlags.Instance;

            // Getting FieldInfo by
            // using GetField() Method
            FieldInfo info = objType.GetField(null, battr);

            // Display the Result
            Console.WriteLine("FieldInfo is: {0}", info);
        }

        // catch ArgumentNullException here
        catch (ArgumentNullException e) 
        {
            Console.WriteLine("name is null.");
            Console.Write("Exception Thrown: ");
            Console.Write("{0}", e.GetType(), e.Message);
        }
    }
}

// Defining class Student
public class Student 
{
    public string Name = "Rahul";
    public string Dept = "Electrical";
    public int Roll = 10;
}

*输出:*

name is null.
Exception Thrown: System.ArgumentNullException 

*参考:*