4

FileAttributesビット単位の操作用に設計された列挙を検討してください。ユーザーがいくつかのチェックボックスを選択してファイルのステータスを判断するシステムを作成しました。ファイルは と の両方ReadOnlyである場合がありSystemます。したがって、値は 5 になります (1 forReadOnlyおよび 4 four System)。

整数が有効なFileAttributes列挙であることを検証するにはどうすればよいですか?

これらの質問を見てきましたが、ビットごとの (フラグが立てられた、結合された) 値では機能しないため、役に立ちませんでした。

整数型が列挙型メンバーに属して
いることを確認してください int が C# で正当な列挙型であるかどうかを確認する方法はありますか?

4

2 に答える 2

5
  • すべての有効な値に対して累積的なビットごとの「または」を計算します (おそらく Enum.GetValues を使用)
  • "testValue & ~allValues" を計算します
  • それがゼロでない場合、有効なフラグを組み合わせて現在の値を形成することは不可能です
于 2012-08-11T08:57:02.667 に答える
2

これは機能します。基本的に、列挙型の組み合わせが無効な場合、ToString() は単に数値を返します。

private bool CombinationValidForFileAttributes(int value)
{
    return ((FileAttributes)value).ToString() != value.ToString();
}
于 2012-08-11T09:09:26.543 に答える