关于c# [FlagsAttribute] 如果要自己实现应该怎么实现?
在.net fromework源码中只看到了
[Serializable]
[AttributeUsage(AttributeTargets.Enum, Inherited = false)]
[System.Runtime.InteropServices.ComVisible(true)]
public class FlagsAttribute : Attribute
{
public FlagsAttribute()
{
}
}
为什么在标上这个属性后,枚举类型作为一个位标识集合使用
这个只是一个标记,本身啥都不干,本身没有任何功能,加不加这个标记各种运算的功能是一模一样的。
它主要是供其它模块读取的(比如说系统实现的的ToString()函数)。你要实现它干嘛?
加上他和不加他做位运算不一样吧
@myFirstway:
一样的,位运算又不读这个标记。
只有读取了这个标记的函数才会有用,我所见过的用这个标记的貌似只有系统实现的ToString()函数。
嗯嗯 好像是在ToString()做处理了谢谢
一样么?你确定?没被坑过吧··?
因为标识只负责标识。
比如给你安上一个帽子,左派,或者右派。
但是要把左派或是右派抓起来,是看政治斗争需要,不是由帽子来执行枪决的。
在.net fromework源码中肯定有对是否有这个属性的判断吧,我想知道在那?
@myFirstway:
@爱编程的大叔: 额这个里面没有说在.netfromework中是怎么实现的。。。
怎么解释呢,你比如说你穿的黄色衣服。然后如果其他人要找黄色衣服的人,那么你就是。否则,不开心你穿什么颜色的衣服。
在.net fromework源码中肯定有对是否有这个属性的判断吧,我想知道在那?
@myFirstway: 看源码。。。
@幻天芒: 在源码中没有找到。。。应该是在那个位操作符下吗?
@myFirstway: 也许吧,没看过源码,不清楚。
@myFirstway: Enum.HasFlag , 貌似是.Net 4.0之后才有的。自己实现一个也不难吧。
@天方: 是在做位运算的时候判断Enum.HasFlag吗?