我有僞碼指定返回類型
T foo<T>(string bar)
{
if (typeof(T) == typeof(string))
{
return bar;
}
...
雖然代碼並沒有真正太大的意義,是有可能得到類似上述工作的東西嗎?
我試過return (T)bar
和return bar as T
無濟於事。
編輯:道歉,僞碼糾正。
我有僞碼指定返回類型
T foo<T>(string bar)
{
if (typeof(T) == typeof(string))
{
return bar;
}
...
雖然代碼並沒有真正太大的意義,是有可能得到類似上述工作的東西嗎?
我試過return (T)bar
和return bar as T
無濟於事。
編輯:道歉,僞碼糾正。
你可以這樣做:
T foo<T>(string bar)
{
if (typeof(T) == typeof(string))
{
return (T)(object)bar;
}
...
但是,如果你正在做的事情不同,這取決於T的類型,你應該重新考慮你的設計......也許泛型不是什麼你最好的選擇正在努力去做。
不確定誰downvoted,但評論爲什麼會很好 –
@jsobo:不知道誰是誰,但答案中的原始代碼顯示'無效'的返回,這可能是爲什麼有人downvoted(編輯後的形式現在是正確的)。 –
@jsobo:看看編輯 – IAbstract
您的僞方法是void
,所以它不期望返回值。
你試圖正確 測試類型例如
if (T.GetType().Equals(typeof(String))) {}
也它是什麼,你是真正想要做..?你是否熟悉如何使用泛型..?
'T'是一個類型參數,'typeof(T)'是正確的,而不是'T.GetType()' –
您必須指定返回類型 - 不void
T foo<T>(string bar){
if (typeof(T) == typeof(string)){
return (T)(object)bar;
}
}
但是這並沒有任何意義 - 你爲什麼要這麼做?通常情況下,您的簽名看起來是這樣的:
void foo<T>(T bar){
if (typeof(T) == typeof(string)){
// do something useful with bar
}
}
...在上面的例子中,修改void
返回無論是一些有用的東西結果。
這將不會編譯...因爲bar是一個字符串不是T ... –
@jsobo:謝謝...編輯 – IAbstract
因爲你有一個無效的方法,或者我錯過了什麼? – CodeCaster
你想完成什麼?之後會發生什麼? –
你的方法被鍵入爲返回void,你試圖返回什麼? –