gpt4 book ai didi

c# - 你能从 C# 中的泛型中获取类型特定的行为吗?

转载 作者:太空宇宙 更新时间:2023-11-03 22:34:57 27 4
gpt4 key购买 nike

我认为应该很清楚我想做什么 - 为 intstring 进行显式特化,而在 C++ 中,这对于显式特化来说是微不足道的 - 是有可能在 C# 中获得相同的行为吗?假设我有充分的理由这样做,这是我程序中更广泛内容的一个简单示例。

static class ReturnConstant<T>
{
public static T FiveOrHello()
{
if(typeof(T) == typeof(int))
{
return 5;
}
else if (typeof(T) == typeof(string))
{
return "Hello!";
}
else
{
throw new NotImplementedException("OH NO");
}
}
}

编辑:

这是等效的、完全合法的 C++ 代码:

template <typename T>
T giveConst();
template <>
int giveConst<int>() { return 5; }
template <>
std::string giveConst<std::string>() { return "Hello"; }

最佳答案

您的实现唯一的错误是 C# 编译器无法验证转换为 T 的类型。

但是你可以像这样解决这个问题:

static class ReturnConstant<T>
{
public static T FiveOrHello()
{
if (typeof(T) == typeof(int))
{
return (T)(object)5;
}
else if (typeof(T) == typeof(string))
{
return (T)(object)"Hello!";
}
else
{
throw new NotImplementedException("OH NO");
}
}
}

关于c# - 你能从 C# 中的泛型中获取类型特定的行为吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55699357/

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