gpt4 book ai didi

generics - C# 添加两个泛型值

转载 作者:行者123 更新时间:2023-12-02 12:16:17 25 4
gpt4 key购买 nike

有人可以解释一下为什么这不起作用吗?我试图将两个值相加,而不管数字类型如何。

public static T Add<T> (T number1, T number2)
{
return number1 + number2;
}

当我编译这个时,我收到以下错误:

Operator '+' cannot be applied to operands of type 'T' and 'T'

最佳答案

不存在允许您强制执行运算符重载的通用约束。您可以看看following library 。或者,如果您使用 .NET 4.0,则可以使用 dynamic 关键字:

public static T Add<T>(T number1, T number2)
{
dynamic a = number1;
dynamic b = number2;
return a + b;
}

显然,这并不适用任何编译时安全性,而这正是泛型的用途。应用编译时安全性的唯一方法是强制执行通用约束。对于您的场景,没有可用的限制。这只是欺骗编译器的一个技巧。如果 Add 方法的调用者未传递与 + 运算符一起使用的类型,则代码将在运行时引发异常。

关于generics - C# 添加两个泛型值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8122611/

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