首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MiscUtils运算符-乘以标量

MiscUtils运算符-乘以标量
EN

Stack Overflow用户
提问于 2010-11-19 22:23:50
回答 3查看 414关注 0票数 0

我正在实现下一个函数:

代码语言:javascript
复制
private bool CheckRelativeIncrease(T pVal1, T pVal2, out T pFluctuation, int x)

我比较的是,如果pVal2比pVal1增加了"x%“以上。我正在使用泛型来使函数在int,short...我正在使用MiscUtils.Operator,但问题是我不能混合使用已知和未知的类型。以下代码不起作用:

代码语言:javascript
复制
            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’的类型不同。

有什么想法吗?

先谢谢你,西尔维娅

EN

回答 3

Stack Overflow用户

发布于 2010-11-19 22:33:16

我不相信我们目前支持混合类型的运算符-但如果你看看Operator<T>的代码,它应该很容易适应。请随时向我发送补丁:)

基本上,您需要一个看起来像Operator<TValue, TResult>Operator<T1, T2, TResult>,只是它对不同的输入和输出使用不同的类型。当然,你需要指定预期的结果类型--如果你将T乘以int,你会期望结果是intT还是其他什么?

如果您使用的是C# 4和.NET 4,则可能需要考虑使用动态类型...

票数 1
EN

Stack Overflow用户

发布于 2010-11-19 22:35:05

根据this documentation的说法,还可以使用两种类型的乘法运算

代码语言:javascript
复制
public static TArg1 MultiplyAlternative(TArg1 value1, TArg2 value2)
票数 0
EN

Stack Overflow用户

发布于 2010-12-19 08:52:03

编写另一个函数将一种类型转换为另一种类型。在代码中对该函数进行嵌套调用,问题就解决了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4225891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档