gpt4 book ai didi

C# : FieldInfo. GetValue 返回 null

转载 作者:太空宇宙 更新时间:2023-11-03 17:45:51 32 4
gpt4 key购买 nike

我在通过反射在变量 o 中检索我的控件 f2 时遇到问题:

public partial class Form1 : Form
{
private Form2 f2;

public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.Show();
}

private void button2_Click(object sender, EventArgs e)
{
Type controlType = this.GetType();
FieldInfo f = controlType.GetField("f2", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
object o = f.GetValue(this); // o == null;
}
}

最佳答案

那是因为您在 button1_Click 中创建了一个名为 f2 的局部变量,但从未将类成员 f2 设置为该新实例:

private void button1_Click(object sender, EventArgs e)
{
// Creates a new variable called f2 that is local to the function
Form2 f2 = new Form2();

// To store the local instance to the class member, you need to un-comment
// this.f2 = f2;
// or change the previous line of code to:
// f2 = new Form2();

// Show the local form
f2.Show();
}

因此类级别f2中存在空值。

我还假设您在此示例中只是在玩反射。如果这不是严格意义上的反射测试...您应该直接引用 this.f2 而不是通过反射。

关于C# : FieldInfo. GetValue 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4596089/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com