指定返回类型

时间:2011-12-02 15:09:08

标签: c# generics

我有psuedocode

T foo<T>(string bar) 
{
 if (typeof(T) == typeof(string))
 {
   return bar;
 }
...

虽然代码真的没有多大意义,但是有可能得到与上述相似的东西吗?

我已尝试return (T)barreturn bar as T无济于事。

编辑:道歉,伪代码纠正。

4 个答案:

答案 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以返回有用的内容的结果。