作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
此代码输出“输出值”。
class P
{
public static void Main()
{
string arg = null;
try
{
Method(out arg);
}
catch
{
}
Console.WriteLine(arg);
}
public static void Method(out string arg)
{
arg = "out value";
throw new Exception();
}
}
但是这个没有。
class P
{
public static void Main()
{
object[] args = new object[1];
MethodInfo mi = typeof(P).GetMethod("Method");
try
{
mi.Invoke(null, args);
}
catch
{
}
Console.WriteLine(args[0]);
}
public static void Method(out string arg)
{
arg = "out value";
throw new Exception();
}
}
当使用反射时,如何同时获得“输出值”和异常?
最佳答案
异常绕过 MethodInfo.Invoke() 中的代码,该代码将 [out] 值从堆栈帧复制回对象数组。 Invoke() 创建的堆栈帧上的值的行为与第一个代码段中的行为一样。但这就是相似之处结束的地方。
关于c# - 如何从抛出异常的方法中通过 out/ref 参数获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2100725/
我是一名优秀的程序员,十分优秀!