📅  最后修改于: 2023-12-03 15:00:15.122000             🧑  作者: Mango
在 C# 中,GetField() 方法通常用于返回一个指定名称的公共字段。它是由 System.Type 类型定义的非静态方法,并且可以通过反射机制动态地访问字段。
public System.Reflection.FieldInfo GetField (string name, System.Reflection.BindingFlags bindingAttr);
其中,参数 name 代表要获取公共字段的名称,参数 bindingAttr 代表构成属性的绑定标志,用于指示搜索方式和绑定情况。
该方法返回包含有关公共字段的信息和动态调用字段的功能的 FieldInfo 对象。如果未找到任何匹配的字段,则返回 null。
以下是一个简单的示例,说明如何使用 GetField() 方法获取一个字段并对其进行操作:
using System;
using System.Reflection;
namespace DemoApplication
{
class Program
{
static void Main(string[] args)
{
Type myType = typeof(MyClass);
FieldInfo myFieldInfo = myType.GetField("myField");
MyClass obj = new MyClass();
int value = (int)myFieldInfo.GetValue(obj);
Console.WriteLine("原来的 myField 值为:" + value);
myFieldInfo.SetValue(obj, 12345);
value = (int)myFieldInfo.GetValue(obj);
Console.WriteLine("新的 myField 值为:" + value);
}
}
class MyClass
{
public int myField = 100;
}
}
在上面的代码中,我们定义了 MyClass 类,其中包含一个公共字段 myField。然后我们使用反射机制获取 myField 字段并将其值更改为 12345。最终,程序会将更改后的字段值输出到控制台。
注:此示例仅用于演示目的。在实际情况中,我们通常不建议直接操作字段,而应该使用属性和方法作为接口来修改和访问对象的状态。