C#特性(Attribute)之Flag特性

更新时间:2023-08-03 12:39:10 阅读: 评论:0

C#特性(Attribute)之Flag特性
鱼肝油什么牌子好
本⽂参考⾃,纯属读书笔记,加深记忆
[Flags]的微软解释是“指⽰可以将枚举作为位域(即⼀组标志)处理。”其实就是在编写枚举类型时,上⾯附上Flags特性后,⽤该枚举变量是既可以象整数⼀样进⾏按位的“|”或者按位的“&”操作了。
另外⼀个是在引⽤COM组件时使⽤,我没有⽤过,你可以查看MSDN径须沽取对君酌
医保卡怎么查询这种⽤处很⼤,⽐如权限、执⾏状态等,都可以⽤⼀个int型保存到数据库中,C#中使⽤枚举可以处理这个问题。
.Net中的枚举⼀般有两种⽤法
(1)、表⽰唯⼀的元素序列,列⼊⼀周天⾥⾯的各天
(2)、表⽰多种的复合状态,这个时候⼀般需要为枚举加上[Flags]特性为标记
下⾯通过代码演⽰[Flags]特性的作⽤
1、不加[Flag]特性的代码
public enum Permission
{
create = 1,
read = 2,
update = 4,
delete = 8,
}四件套床上用品
策划案模板static void Main(string[] args)
{
Permission permission = ate | ad | Permission.update | Permission.delete;
Console.WriteLine("1、枚举创建,并赋值……");
Console.WriteLine(permission.ToString());
Console.WriteLine((int)permission);
}
输出:
2、加[Flag]特性的代码
[Flags]
public enum Permission
{
create = 1,
read = 2,
update = 4,
delete = 8,
}
怎样催奶最快static void Main(string[] args)
默歌曲{
Permission permission = ate | ad | Permission.update | Permission.delete;
Console.WriteLine("1、枚举创建,并赋值……");
Console.WriteLine(permission.ToString());
Console.WriteLine((int)permission);
}
输出:担心的反义词
3、分析上⾯的代码,发现加上[Flags]特性之后,对于枚举的追加操作,没加特性的只是单纯的从值上的相加,⽽加了特性的则是枚举上的相加。这也导致了create=1,read=2,update=4,delete=8的原因,因为两个状态的值相加不能等于其中任何⼀个的值,如果相等的话,那么[Flag]也就失去了使⽤它的意义(因为给⼀个⽤户赋予进⾏read和delete操作的权限,如果两个相加的值等于update,那不乱套了么,所以这⾥两个状态的值相加不能等于其中任何⼀个的值)。当然这⾥如果加⼀个可读可删的权限,那么就可以这样写了:readAndDelete=10。是不是很灵活
这种⽤处很⼤,⽐如权限、执⾏状态等,都可以⽤⼀个int型保存到数据库中,C#中使⽤枚举可以处理这个问题。

本文发布于:2023-08-03 12:39:10,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1106561.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:相加   状态   特性
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图