有没有办法在C#中的Ref参数类型和非ref版本之间进行转换

And*_*ker 3 c#

我正在查看方法的参数并提取类型.我回来(例如)"System.String&",因为参数是一个out参数.我想知道参数是否是一个String - 但似乎没有一种方法可以将String转换为非ref参与者.

谁能指出我正确的方向?

谢谢!

Qua*_*ter 9

Type.GetElementType

当前数组,指针或引用类型包含或引用的对象类型,如果当前Type不是数组或指针,或者不通过引用传递,或者表示泛型类型或类型参数,则返回null在泛型类型或通用方法的定义中.

例:

var stringRefType = typeof(string).MakeByRefType();
var stringType = stringRefType.GetElementType();
Console.WriteLine(stringType == typeof(string)); // True
Run Code Online (Sandbox Code Playgroud)

  • 并且您将使用`IsByRef`属性来确定它是引用类型,而不是检查类型名称是否以"&"结尾,以完成您的答案. (2认同)