gpt4 book ai didi

c# - 如何从抛出异常的方法中通过 out/ref 参数获取值?

转载 作者:可可西里 更新时间:2023-11-01 08:29:52 25 4
gpt4 key购买 nike

此代码输出“输出值”。

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/

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