gpt4 book ai didi

c# - 使用泛型方法,是否可以从同一方法返回不同的类型?

转载 作者:太空狗 更新时间:2023-10-29 22:24:58 25 4
gpt4 key购买 nike

我可以这样吗:

int x = MyMethod<int>();
string y = MyMethod<string>();

因此,一个方法基于 T 返回不同的类型。当然,方法内部会有逻辑来确保它返回正确的东西。

我永远无法让这样的东西运行。它提示无法将返回值转换为 T:

public static T MyMethod<T>()
{
if(typeof(T) == typeof(Int32))
{
return 0;
}
else
{
return "nothing";
}
}

最佳答案

尝试以下操作

public static T MyMethod<T>() {
if ( typeof(T) == typeof(Int32) ) {
return (T)(object)0;
} else {
return (T)(object)"nothing";
}
}

这里的技巧是转换为 object。您尝试执行的操作本质上是不安全的,因为编译器无法推断 0 或“无”可转换为任何给定的 T。毕竟是无界的。因此,只要明确地告诉编译器,转换为 object 是不安全的。

关于c# - 使用泛型方法,是否可以从同一方法返回不同的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2120788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com