我有psuedocode
T foo<T>(string bar)
{
if (typeof(T) == typeof(string))
{
return bar;
}
...
虽然代码真的没有多大意义,但是有可能得到与上述相似的东西吗?
我已尝试return (T)bar
和return bar as T
无济于事。
编辑:道歉,伪代码纠正。
答案 0 :(得分:4)
你可以这样做:
T foo<T>(string bar)
{
if (typeof(T) == typeof(string))
{
return (T)(object)bar;
}
...
但是如果你根据T的类型做一些不同的事情,你应该重新考虑你的设计......也许仿制药并不是你想要做的最好的选择。
答案 1 :(得分:1)
您的伪方法是void
,因此它不会期望返回值。
答案 2 :(得分:0)
您是否尝试过正确测试类型? 例如
if (T.GetType().Equals(typeof(String))) {}
你真正想做的是什么呢?你熟悉如何使用Generics ..?
答案 3 :(得分:0)
您必须指定返回类型 - 而不是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
以返回有用的内容的结果。