首页 新闻 会员 周边 捐助

关于c# [FlagsAtribute] 如果要自己实现应该怎么实现

0
悬赏园豆:50 [已解决问题] 解决于 2015-04-29 10:04

关于c# [FlagsAttribute] 如果要自己实现应该怎么实现?

在.net fromework源码中只看到了

[Serializable]
[AttributeUsage(AttributeTargets.Enum, Inherited = false)]
[System.Runtime.InteropServices.ComVisible(true)]
public class FlagsAttribute : Attribute
{
public FlagsAttribute()
{
}
}

为什么在标上这个属性后,枚举类型作为一个位标识集合使用

myFirstway的主页 myFirstway | 初学一级 | 园豆:139
提问于:2015-04-28 13:58
< >
分享
最佳答案
0

这个只是一个标记,本身啥都不干,本身没有任何功能,加不加这个标记各种运算的功能是一模一样的。

它主要是供其它模块读取的(比如说系统实现的的ToString()函数)。你要实现它干嘛?

收获园豆:30
天方 | 大侠五级 |园豆:5432 | 2015-04-28 14:42

加上他和不加他做位运算不一样吧

myFirstway | 园豆:139 (初学一级) | 2015-04-28 15:18

@myFirstway: 

一样的,位运算又不读这个标记。

只有读取了这个标记的函数才会有用,我所见过的用这个标记的貌似只有系统实现的ToString()函数。

天方 | 园豆:5432 (大侠五级) | 2015-04-28 16:52

嗯嗯  好像是在ToString()做处理了谢谢

myFirstway | 园豆:139 (初学一级) | 2015-04-29 10:04

一样么?你确定?没被坑过吧··?

宇辰(馨辰) | 园豆:370 (菜鸟二级) | 2015-04-29 22:26
其他回答(3)
0

因为标识只负责标识。

比如给你安上一个帽子,左派,或者右派。

但是要把左派或是右派抓起来,是看政治斗争需要,不是由帽子来执行枪决的。

收获园豆:10
爱编程的大叔 | 园豆:30844 (高人七级) | 2015-04-28 14:44

在.net fromework源码中肯定有对是否有这个属性的判断吧,我想知道在那?

支持(0) 反对(0) myFirstway | 园豆:139 (初学一级) | 2015-04-28 15:17

@myFirstway: 

Attributes Tutorial

支持(0) 反对(0) 爱编程的大叔 | 园豆:30844 (高人七级) | 2015-04-28 15:22

@爱编程的大叔: 额这个里面没有说在.netfromework中是怎么实现的。。。

支持(0) 反对(0) myFirstway | 园豆:139 (初学一级) | 2015-04-28 16:17
0

怎么解释呢,你比如说你穿的黄色衣服。然后如果其他人要找黄色衣服的人,那么你就是。否则,不开心你穿什么颜色的衣服。

收获园豆:10
幻天芒 | 园豆:37207 (高人七级) | 2015-04-28 14:59

在.net fromework源码中肯定有对是否有这个属性的判断吧,我想知道在那?

 

支持(0) 反对(0) myFirstway | 园豆:139 (初学一级) | 2015-04-28 15:16

@myFirstway: 看源码。。。

支持(0) 反对(0) 幻天芒 | 园豆:37207 (高人七级) | 2015-04-28 15:37

@幻天芒: 在源码中没有找到。。。应该是在那个位操作符下吗?

支持(0) 反对(0) myFirstway | 园豆:139 (初学一级) | 2015-04-28 15:53

@myFirstway: 也许吧,没看过源码,不清楚。

支持(0) 反对(0) 幻天芒 | 园豆:37207 (高人七级) | 2015-04-28 16:39

@myFirstway:  Enum.HasFlag , 貌似是.Net 4.0之后才有的。自己实现一个也不难吧。

支持(0) 反对(0) 天方 | 园豆:5432 (大侠五级) | 2015-04-28 16:57

@天方: 是在做位运算的时候判断Enum.HasFlag吗?

支持(0) 反对(0) myFirstway | 园豆:139 (初学一级) | 2015-04-28 18:01
0
K战神 | 园豆:93 (初学一级) | 2015-04-29 18:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册