一个枚举(Enum)的位操作的例子
2012-03-29 18:09 音乐让我说 阅读(678) 评论(0) 编辑 收藏 举报比较过程为 0101 & 0001 = 0001, 0001的0位用与C#位运算把其它位都置成0, 变成只比较1的这一位.
更新说明:
推荐 Enums.NET 开源组件处理 C# 枚举。这里是我整理的 Demo:https://files.cnblogs.com/files/Music/Enums.NET_Demo_VeryGood.rar
代码:
using System;
namespace DearBruce.ConAppTest
{
class Program
{
static void Main(string[] args)
{
string[] items = new string[]
{
GetResult(FreeType.Discount), //打折中...
GetResult(FreeType.AlwaysNonDiscount), //没有打折...
GetResult(FreeType.LimiteTimeDiscount), //打折中...
GetResult(FreeType.Discount | FreeType.AlwaysNonDiscount), //打折中...
GetResult(FreeType.WaitingForDiscount), //没有打折...
GetResult(FreeType.AlwaysNonDiscount | FreeType.WaitingForDiscount), //没有打折...
};
CommonHelper.Show(items);
}
static string GetResult(FreeType freeType)
{
//比较过程为 0101 & 0001 = 0001, 0001的0位用与C#位运算把其它位都置成0, 变成只比较1的这一位.
//当然,如果是判断是否等于0也可以,因为位与操作之后,不是自己就是0
if ( ((freeType & FreeType.Discount) == FreeType.Discount) || ((freeType & FreeType.LimiteTimeDiscount) == FreeType.LimiteTimeDiscount))
{
return "打折中...\n";
}
return "没有打折...\n";
}
}
[Flags]
public enum FreeType
{
/// <summary>
/// 打折
/// </summary>
Discount = 1,
/// <summary>
/// 限时打折
/// </summary>
LimiteTimeDiscount = 2,
/// <summary>
/// 永远不打折
/// </summary>
AlwaysNonDiscount = 4,
/// <summary>
/// 等待打折
/// </summary>
WaitingForDiscount = 8
}
}
谢谢浏览!
作者:音乐让我说(音乐让我说 - 博客园)
出处:http://music.cnblogs.com/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。