我正在实现下一个函数:
private bool CheckRelativeIncrease(T pVal1, T pVal2, out T pFluctuation, int x)我比较的是,如果pVal2比pVal1增加了"x%“以上。我正在使用泛型来使函数在int,short...我正在使用MiscUtils.Operator,但问题是我不能混合使用已知和未知的类型。以下代码不起作用:
bool increased = false;
int comparer = Comparer.Default.Compare(pVal1, pVal2);
pFluctuation = Operator<T>.Zero;
if (comparer > 0) {
int factor = (int)(1 + (x / 100));
pFluctuation = Operator.Multiply(factor, pVal2);
comparer = Comparer.Default.Compare(pVal1, pFluctuation);
if (comparer >= 0)
increased = true;
}
return increased;"Operator.Multiply“给我一个错误,因为'factor‘和'pVal2’的类型不同。
有什么想法吗?
先谢谢你,西尔维娅
发布于 2010-11-19 22:33:16
我不相信我们目前支持混合类型的运算符-但如果你看看Operator<T>的代码,它应该很容易适应。请随时向我发送补丁:)
基本上,您需要一个看起来像Operator<TValue, TResult>的Operator<T1, T2, TResult>,只是它对不同的输入和输出使用不同的类型。当然,你需要指定预期的结果类型--如果你将T乘以int,你会期望结果是int,T还是其他什么?
如果您使用的是C# 4和.NET 4,则可能需要考虑使用动态类型...
发布于 2010-11-19 22:35:05
根据this documentation的说法,还可以使用两种类型的乘法运算
public static TArg1 MultiplyAlternative(TArg1 value1, TArg2 value2)发布于 2010-12-19 08:52:03
编写另一个函数将一种类型转换为另一种类型。在代码中对该函数进行嵌套调用,问题就解决了。
https://stackoverflow.com/questions/4225891
复制相似问题