【问题标题】:CA 2225 while overloading long operatorCA 2225 重载长运算符时
【发布时间】:2015-11-17 12:20:40
【问题描述】:

我正在尝试重载长运算符。

public static implicit operator long (Abc abc)
{
      .....
}

代码分析为它提供CA2225。

运算符重载已命名备用。提供一个名为的方法 'ToXXX' 或 'FromXXX' 作为运算符 'FileTime.implicit 的替代 运算符长(文件时间)'。

有人可以帮忙吗?

【问题讨论】:

  • msdn.microsoft.com/en-us/library/2sk3x8a7(v=vs.71).aspx 基本上只是添加一个public static long ToLong(Abc abc) 方法。
  • 错误信息和错误帮助文档看起来很清楚。您具体遇到了什么问题?您是否尝试按照错误消息中的建议进行操作? IE。 “提供一个名为 'ToXXX' 或 'FromXXX' 的方法作为运算符 'FileTime.implicit operator long(FileTime)' 的替代方法。”
  • Peter Duniho .....我不明白这个函数的主体是什么?我在原始函数中编写的代码相同??这两个函数将具有相同的主体?
  • 我还必须用这个 ToXXX 或 FromXXX 函数替换我的函数吗?还是我们保留这两个功能?

标签: c# operator-overloading overloading fxcop


【解决方案1】:

正如我在 PSR 答案下的评论中提到的,您需要添加一个静态方法 ToLong,而不是另一个隐式运算符。

public static long ToLong(Abc abc)
{
   // Logic for converting Abc to long here.
}

将此方法与隐式运算符一起添加将解决您的警告。

【讨论】:

    【解决方案2】:

    将此方法与您的方法一起添加到您的类中。

    public static implicit operator long(Abc abc){ }
    
    public static implicit operator Tolong(Abc abc){ }
    

    【讨论】:

    • Tolong 不是一种类型,也不能是隐式运算符的一部分。您需要一个名为 ToLong 的静态方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 2012-07-23
    • 2016-02-19
    • 1970-01-01
    • 2011-06-21
    相关资源
    最近更新 更多