4

関数から値を返すためにビットごとの列挙型を使用しています

[Flags]
private enum PatientRecord { NoRecord=0x0, SameEnrollmentDate=0x1, SameScreeningDate=0x2 }

そして機能を持っています

var returnVar = PatientRecord.NoRecord;
....
if (condition...)
{
   returnVar &= PatientRecord.SameEnrollmentDate;
}
return returnVar

デバッガーは、AND 代入演算子が実行される前後で returnVar の値が同じであることを示しています (PatientRecord.NoRecord (0) または PatientRecord.SameScreeningDate (2))。

なぜこれなのか、以下よりも優れた解決策はありますか:

returnVar = returnVar & PatientRecord.SameEnrollmentDate;

ありがとう。

4

1 に答える 1

4

|ビットごとの AND ( ) ではなく、ビットごとのOR ( ) が必要です&

var returnVar = PatientRecord.NoRecord;
....
if (condition...)
{
   returnVar |= PatientRecord.SameEnrollmentDate;
   //        ^ Bitwise OR assignment
}

ゼロ ( NoRecord=0x0) と AND すると、常にゼロになります。

于 2013-06-09T05:26:19.083 に答える