ten kod wyświetla "out value".Jak uzyskać wartość za pomocą parametru out/ref z metody, która zgłasza wyjątek?
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();
}
}
ale ten nie.
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();
}
}
jaki sposób można uzyskać zarówno "wartość wyjścia" i wyjątek gdy użyciu odbicia?
Ładne pytanie. Ale nie powinieneś polegać na wartości 'out', jeśli metoda rzuca. –
+1, świetne pytanie, oczywiście musiałem spróbować :) Spekulowałbym, że twoja oryginalna zmienna nie zostanie przekazana do wywoływanej funkcji, otrzyma kopię, a ta kopia zostanie ponownie odzwierciedlona w oryginale po pomyślnym ukończenie (co oczywiście nie nastąpi). – slugster
@lesterster: Twoje spekulacje są poprawne. Podejrzewam, że nie ma sposobu, aby to zrobić z refleksją. –