是否可以以这种方式转换为元组?
(string value, bool flag) value1 = MethodInfo.Invoke(this, param) as (string, bool);
不幸的是它抛出:
" as操作符必须与引用类型或可空类型一起使用('(string, bool)'是非空值类型)">
只能这样工作:
Tuple<string, bool> value1 = MethodInfo.Invoke(this, param) as Tuple<string, bool>;
可以使用强制转换表达式进行强制转换:
(string value, bool flag) tuple = ((string, bool)) MethodInfo.Invoke(this, param);
但与使用as
不同,如果Invoke
的返回值不是(string, bool)
,则会崩溃。如果你不喜欢这样,你可以使用模式匹配:
if (methodInfo.Invoke(this, param) is (string value, bool flag))
{
Console.WriteLine($"({value}, {flag})");
// assign it to a new variable if you want it as one "thing":
(string value, bool flag) tuple = (value, flag);
}