指定返回类型

本文关键字:返回类型 | 更新日期: 2023-09-27 18:16:48

我有伪代码

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

虽然代码真的没有多大意义,有可能得到类似于上面的工作吗?

我试过return (T)barreturn bar as T,但都无济于事。

编辑:抱歉,伪代码已更正

指定返回类型

你可以这样做:

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

但是如果你根据T的类型做一些不同的事情,你可能应该重新考虑你的设计…也许泛型不是您想要做的事情的最佳选择。

您的伪方法是void,所以它不期望返回值

你试过正确地测试这种类型吗例如

if (T.GetType().Equals(typeof(String))) {}

还有什么是你真正想做的…?你熟悉如何使用泛型吗?

您必须指定返回类型-不是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,使其返回的结果,即