この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 24485|答える: 3

[出典] C# Enum Simple Permission DesignはFlagsAttributeプロパティを使用します

[リンクをコピー]
掲載地 2019/04/22 14:30:51 | | | |
C#では、整数オブジェクトに対してビット単位で論理操作を行うことができます。 ビットごとの論理操作の意味は、操作対象の各ビットを順番に取り、各ビットの論理操作結果が結果値の各ビットであることを意味します。 C#がサポートするビット論理演算子は以下の図に示されています。



基本的な許可設計:

<summary>
///權限列舉
</summary>
[FlagsAttribute]
publicenumPermissions
{
説明(「設定されていません」)]
None=0、
[説明("作成")]
Create=1,
[説明("読む")]
Read=2、
[説明("更新")]
更新=4、
[説明("削除")]
Delete=8,
[説明("すべての特徴")]
All=Create|読む|アップデート|削除
}



技術1:2のべき乗を将来のビット演算(&AND、|OR、^XOR)の列挙値として使用します。


ヒント2:既存の権限に新しい権限アクションを追加する。 (手術室)

Permissionspermission=Permissions.None;
許可=許可|Permissions.Create;
MessageBox.Show(許可。 ToString());
結果:作成

ヒント3:[FlagsAttribute]タグを追加してください

Permissionspermission=Permissions.None;
許可=許可|Permissions.Create;
MessageBox.Show(許可。 ToString());
結果:Create([FlagsAttribute]は結果に影響を与えません)

許可=許可|許可。読んでください;
MessageBox.Show(許可。 ToString());
結果:3([FlagsAttribute]未追加)
結果:作成、読書([FlagsAttribute]を追加)


ヒント4:既存の許可から特定の許可アクションを削除する。 (XORおよびANDの計算応用)

Permissionspermission=Permissions.None;
許可=許可|Permissions.Create;
MessageBox.Show(許可。 ToString());
結果:作成

許可=許可|許可。読んでください;
許可=許可|許可事項。アップデート;
MessageBox.Show(許可。 ToString());
結果:作成、読み取り、更新

permission=(permission&(Permissions.All^Permissions.Read));
MessageBox.Show(許可。 ToString());
結果:作成、更新


ヒント5:現在の権限(および操作)で特定の権限があるかどうかを判断してください

Permissionspermission=Permissions.None;
許可=許可|Permissions.Create;
MessageBox.Show(許可。 ToString());
結果:作成

許可=許可|許可。読んでください;
許可=許可|許可事項。アップデート;
MessageBox.Show(許可。 ToString());
結果:作成、読み取り、更新

permission=(permission&(Permissions.All^Permissions.Read));
MessageBox.Show(許可。 ToString());
結果:作成、更新

boolIsCreatable=false;
if((permission&Permissions.Create)==Permissions.Create)
{
IsCreatable=真;
}
そうでなければ
{
IsCreatable=false;
}
MessageBox.Show(IsCreatable.ToString());
結果:真

C#の列挙はフラグ機能を使用しており、複数の値を1つの列挙変数に格納します
https://www.itsvse.com/thread-4661-1-1.html
(出典:Architect_Programmer)







先の:System.MissingMethodException: 找不到方法:“Void Dapper.DynamicP...
次に:C#における仮想抽象と(抽象)抽象およびインターフェースの類似点と相違点...
掲載地 2019/04/23 8:28:32 |
よく話し合い、一緒に成長しましょう! - 2019年4月23日火曜日 08:28:32 GMT+0800(中国標準時)
掲載地 2019/11/11 9:49:58 |
マルチセレクト列挙の説明はどうやって入手できますか?
 地主| 掲載地 2019/11/11 11:00:19 |
青空と白雲 2019-11-11 09:49 投稿
マルチセレクト列挙の説明はどうやって入手できますか?

以下の記事をご参照ください

C# Enum enum 型演算拡張クラス
https://www.itsvse.com/thread-7286-1-1.html
(出典:Architect_Programmer)
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com