MethodInfo的Invoke方法中,怎么传ref参数?

hewenchun 2005-06-10 10:25:52
如:
public class ClassA
{
public void func1( ref int j )
{
j++ ;
}
}
public class ClassB
{
public void func2()
{
int j ;
ClassA A = new ClassA() ;
Type tpClass = A.GetType() ;
MethodInfo miMethod = tpClass.GetMethod( "func1" ) ;
miMethod.Invoke( A , new object[]{j} ) ; //这里这样调用的话,返回的j并没有作相应 的改变,没有达到ref的效果;如果写成ref j的话又有错误,该怎么写啊。
}
}
...全文
406 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
速马 2005-06-10
  • 打赏
  • 举报
回复 1
主要的原因是改变后的值还在object[]里面,而不是直接作用到变量j
mmqingfeng 2005-06-10
  • 打赏
  • 举报
回复
new object[]{j}
这有什么用啊?!

像这样来做

int j = 10;
object[] args = new object[1];
args[0] = j;
ClassA A = new ClassA() ;
Type tpClass = A.GetType() ;
MethodInfo miMethod = tpClass.GetMethod( "func1" ) ;
miMethod.Invoke( A , args) ;

Console.WriteLine(ars[0]);
quickball 2005-06-10
  • 打赏
  • 举报
回复
public void func2()
{
int j = 0;
ClassA A = new ClassA();
type tpClass = A.GetType();
MethodInfo miMethod = tpClass.GetMethod("func1");

// 注意下面两行的改动
object[] args = new object[] { j };
miMethod.Invoke(A, args);
}

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧