我有以下枚举:
天:
Sunday 1
Monday 2
Tuesday 4
Wednesday 8
Thursday 16
Friday 32
Saturday 64
Run Code Online (Sandbox Code Playgroud)
WeekOfMonth
First 256
Second 512
Third 1024
Fourth 2048
Run Code Online (Sandbox Code Playgroud)
例如,我有一个数字514,它是512(Second)+ 2(Monday)的总和.
如果我的号码只有514,我该如何获得Second&Monday?
假设以下定义:
[Flags]
enum Days {
Sunday = 1,
Monday = 2,
Tuesday = 4,
Wednesday = 8,
Thursday = 16,
Friday = 32,
Saturday = 64
}
[Flags]
enum WeekOfMonth {
First = 256,
Second = 512,
Third = 1024,
Fourth = 2048
}
Run Code Online (Sandbox Code Playgroud)
您可以使用以下代码获取所需的字符串:
var value = (Int32) WeekOfMonth.Second + (Int32) Days.Monday; // 514
var days = (Days) (value & 0xFF);
var weekOfMonth = (WeekOfMonth) (value & 0xFF00);
var str = String.Format("{0} & {1}", weekOfMonth, days);
Run Code Online (Sandbox Code Playgroud)
变量str将Second & Monday根据需要包含.
[Flags]如果您希望能够组合多个Days值或WeekOfMonth值,则该属性很重要.比如((Days) 3).ToString()将返回Sunday, Monday.如果您忘记了[Flags]返回的字符串的属性3.
| 归档时间: |
|
| 查看次数: |
296 次 |
| 最近记录: |