2010-07-27 85 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

相關問題