私はコードの古い作品で、このような列挙型を持っているのではintに:この列挙について今コンパイル時の変換は、C#
[Flags]
public enum Example: uint
{
Foo = 0x00000001,
Bar = 0xC0000000
}
、FxCop is complainingではなく、それはフィールドをバックアップだとしてint型よりもUINT使用します。 (そして、私はこのコードをFxCopとしてできるだけきれいにすることを任されています...)しかし、enumの高位ビットを使用する既存のenum値があります。これは変更されません。オンディスクフォーマット。私はこれをコンパイルしようとすると、C#コンパイラが正しく文句:
error CS0266: Cannot implicitly convert type 'uint' to 'int'. An explicit conversion exists (are you missing a cast?)
をので、私の代わりにこれまでそれを変更するつもりだった。
[Flags]
public enum Example
{
Foo = 0x00000001,
Bar = (int)0xC0000000
}
しかし、私は私が依存していることを肯定的ではありませんよこれは算術例外を投げたり、ディスクに読み書きしたりするときに正しく処理されません。列挙型が符号なしのintでサポートされていたときに使用した形式と一致するビット形式に依存できますか?
これは、FxCopのすべての問題を解決するわけではありません。すべての '' Flags''列挙体に '' None''メンバを持たなければならないと言っても驚かないでしょう。これは、コードを変更できない理由についてのコメント付き、インライン警告抑制のための非常に良い場所のようです。 –
@Cody:はい、私はそれをやり遂げる可能性があります。 –