c# - 计算枚举参数的数量
问题描述
我是 C# 中的枚举新手。我将多个枚举值作为参数传递给方法。在我想知道的方法中,我有什么价值观。
让我解释。
Class A
{
[Flags]
public enum days
{
sunday =1,
monday =2,
tuesday= 4
}
static void Main(string[] args)
{
dummy(days.sunday|days.monday);
dummy(days.sunday);
}
public static void dummy(days Daysofweek)
{
if(\* Daysofweek is oly sunday*/){/*some function*/}
else if(\* Daysofweek is sunday and monday*/){/*some other function*/}
Console.WriteLine(Daysofweek.ToString());
}
}
'''
我想要实现的只是“如果参数中只有一个值然后做某事,否则如果有多个值然后做其他事情”。
解决方案
我想要实现的只是“如果参数中只有一个值然后做某事,否则如果有多个值然后做其他事情”。
由于Flags
值中是单个位,因此是 2 的幂,您可以使用
uint v; // we want to see if v is a power of 2
bool f; // the result goes here
f = (v & (v - 1)) == 0;
检查该值是否是 2 的幂,如果不是,则设置了多个标志。见这里:https ://graphics.stanford.edu/~seander/bithacks.html#DetermineIfPowerOf2
但请记住这一点
请注意,此处将 0 错误地视为 2 的幂。
public static void dummy(days Daysofweek)
{
int val = (int) Daysofweek;
bool hasMultipleFlagsSet = val != 0 && (val & (val - 1)) == 0;
if(hasMultipleFlagsSet){/*some function*/}
else {/*some other function*/}
Console.WriteLine(Daysofweek.ToString());
}
推荐阅读
- pyspark - 在 pySpark 中定义自定义窗口函数
- ios - xcodebuild:离子电容器应用程序中的命令失败,退出代码为 65
- jquery - 将 HTML 表格数据和模型数据传递给控制器 MVC
- java - 将 SimplesamlPHP 与 Java 应用程序集成
- elasticsearch - 将 geo_shape 读取为 GeoJSON 文本
- flutter - 我怎样才能创建一个表如下
- python-3.x - 查找调用特定方法的类对象
- java - 配置 Jolokia 服务器和代理的问题
- javascript - 有没有办法让一个 div 的高度与另一个 div 的高度相同,而不需要两个 div 都在同一个容器中?
- jquery - 如何长出一个圆圈来覆盖页面并成为菜单