我有问题通过Reflection在变量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;
}
}
Run Code Online (Sandbox Code Playgroud)
那是因为您创建了一个名为f2in 的局部变量,button1_Click但从未将类成员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();
}
Run Code Online (Sandbox Code Playgroud)
因此,类级别中存在空值f2.
我也假设你在这个例子中只是玩反射.如果这不是严格的反射测试......你应该直接参考this.f2,而不是通过反射.
| 归档时间: |
|
| 查看次数: |
6508 次 |
| 最近记录: |