System.Enum.HasFlag 方法
方法描述
确定当前实例中是否设置了一个或多个位域。
语法定义(C# System.Enum.HasFlag 方法 的用法)
public bool HasFlag( Enum flag )
参数/返回值
参数值/返回值 | 参数类型/返回类型 | 参数描述/返回描述 |
---|---|---|
flag | System-Enum | 一个枚举值。 |
返回值 | System.Boolean | 如果在 flag 中设置的位域也在当前实例中进行了设置,则为 true;否则为 false。 |
提示和注释
HasFlag 方法返回下列布尔表达式的结果。
复制
thisInstance And flag = flag
如果 flag 的基础值为零,则方法将返回 true。 如果此行为不理想,您可以使用 Equals 方法测试是否与零相等,并只在 flag 的值是非零时调用 HasFlag,如下面的示例所示。
C#
VB
复制
using System;
[Flags] public enum Pet {
None = 0,
Dog = 1,
Cat = 2,
Bird = 4,
Rabbit = 8,
Other = 16
}
public class Example
{
public static void Main()
{
Pet[] petsInFamilies = { Pet.None, Pet.Dog | Pet.Cat, Pet.Dog };
int familiesWithoutPets = 0;
int familiesWithDog = 0;
foreach (Pet petsInFamily in petsInFamilies)
{
// Count families that have no pets.
if (petsInFamily.Equals(Pet.None))
familiesWithoutPets++;
// Of families with pets, count families that have a dog.
else if (petsInFamily.HasFlag(Pet.Dog))
familiesWithDog++;
}
Console.WriteLine("{0} of {1} families in the sample have no pets.",
familiesWithoutPets, petsInFamilies.Length);
Console.WriteLine("{0} of {1} families in the sample have a dog.",
familiesWithDog, petsInFamilies.Length);
}
}
// The example displays the following output:
// 1 of 3 families in the sample have no pets.
// 2 of 3 families in the sample have a dog.
HasFlag 方法旨在用于使用 FlagsAttribute 特性标记的枚举类型。 对于没有标记 FlagsAttribute 特性的枚举类型,调用 Equals 方法或 CompareTo 方法。
System.Enum.HasFlag 方法例子
该示例测试是否客户已经同时点了主菜和饮料。
using System; [Flags] public enum DinnerItems { None = 0, Entree = 1, Appetizer = 2, Side = 4, Dessert = 8, Beverage = 16, BarBeverage = 32 } public class Example { public static void Main() { DinnerItems myOrder = DinnerItems.Appetizer | DinnerItems.Entree | DinnerItems.Beverage | DinnerItems.Dessert; DinnerItems flagValue = DinnerItems.Entree | DinnerItems.Beverage; Console.WriteLine("{0} includes {1}: {2}", myOrder, flagValue, myOrder.HasFlag(flagValue)); } } // The example displays the following output: // Entree, Appetizer, Dessert, Beverage includes Entree, Beverage: True
异常
异常 | 异常描述 |
---|---|
ArgumentException | flag 具有与当前实例不同的类型。 |
版本信息
.NET Framework 受以下版本支持:4 .NET Framework Client Profile 受以下版本支持:4
适用平台
Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。