2010-07-27 32 views
3

我正在查看一个方法的参数和提取类型。我回来(例如)“System.String &”,因为该参数是一个输出参数。我想知道参数是否是一个字符串 - 但似乎没有将字符串&转换为它的非参照对象的方法。有没有办法转换Ref参数类型和非参考版本在C#

任何人都可以指向正确的方向吗?

谢谢!

+0

什么是'字符串&'? – GenericTypeTea 2010-07-27 12:54:52

+1

如果你在一个方法上有'ref'参数,并且使用反射来检查参数类型,那么你将得到一个类型名,并在其中添加一个&符号,表示它是'ref'参数。 – 2010-07-27 12:57:34

+0

@丹尼尔 - 谢谢,从来不知道。 – GenericTypeTea 2010-07-27 12:58:02

回答

9

Type.GetElementType

的对象的类型包括的或 由当前的阵列, 指针或引用类型,或者为null如果 当前Type称为不是数组或一个 指针,或不通过 参考,或代表通用类型的 定义中的通用 类型或类型参数或 通用方法。

例子:

var stringRefType = typeof(string).MakeByRefType(); 
var stringType = stringRefType.GetElementType(); 
Console.WriteLine(stringType == typeof(string)); // True 
+2

而您将使用'IsByRef'属性来确定它是一个引用类型,而不是检查类型名称是否以“&”结尾,以完成您的答案。 – 2010-07-27 13:04:50

+0

这让我感到非常高兴,因为这样的模糊问题的答案实际上已经在这里得到解答。赢了! – MarkPflug 2012-07-03 13:06:17

相关问题