下面的代码执行没有错误并打印“ In some ”,这意味着该语句
m[0].Invoke(o, args);
在对象上调用作为类some
成员的函数并影响其公共变量。但是当我们取消注释最后一行代码并尝试编译它时,它会产生错误。为什么??foo
o
i
using System;
using System.Reflection;
class foo
{
public int i;
public foo(int ii = 0)
{
i = ii;
}
public void some(int ii)
{
i = ii;
Console.WriteLine("In some ");
}
}
class main
{
static public void Main()
{
foo f = new foo();
object o = new foo();
Type t = typeof(foo);
object[] args = new object[1];
args[0] = 9;
MethodInfo[] m = t.GetMethods();
m[0].Invoke(o, args);
//Console.WriteLine(o.i);
}
}