gpt4 book ai didi

c# - C# 中的模板函数 - 返回类型?

转载 作者:IT王子 更新时间:2023-10-29 04:52:24 29 4
gpt4 key购买 nike

好像c#不支持c++ like templates。例如

template <class myType>
myType GetMax (myType a, myType b) {
return (a>b?a:b);
}

我希望我的函数具有基于其参数的返回类型,我如何在 C# 中实现这一点?如何在C#中使用模板

编辑:我可以将 object 和 getType 用于几乎相同的目的吗?

最佳答案

C# 中最接近 C++ 模板的是泛型——但它们非常不是很接近。特别是,您不能在泛型类型值之间使用像 > 这样的运算符,因为编译器不知道它们(并且您不能基于运算符约束类型)。另一方面,你可以这样写:

public T GetMax<T>(T lhs, T rhs)
{
return Comparer<T>.Default.Compare(lhs, rhs) > 0 ? lhs : rhs;
}

public T GetMax<T>(T lhs, T rhs) where T : IComparable<T>
{
return lhs.CompareTo(rhs) > 0 ? lhs : rhs;
}

请注意,其中第一个是空安全的;第二个不是。

泛型的完整描述远远超出了 Stack Overflow 答案的范围; MSDN有一些资料,或者查阅你最喜欢的 C# 书籍。

关于c# - C# 中的模板函数 - 返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3049072/

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