我有一個類的二進制面膜:解密二進制面膜C#
public class Masque
{
public bool MasquerAdresse { get; set; }
public bool MasquerCpVille { get; set; }
public bool MasquerTelephone { get; set; }
public bool MasquerFax { get; set; }
public bool MasquerEmail { get; set; }
public bool MasquerNom { get; set; }
}
和在數據庫中我有一個二進制面膜字段: 當我具有值1 => MasquerAdresse爲真,2 => MasquerCpVille是真實的,4 => MasquerTelephone是真的3 => MasquerAdresse和MasquerCpVille是真正的等等,這是該二進制面膜在C#解碼
你的價值是什麼?由於有幾種方法可以像[BitArray](https://msdn.microsoft.com/en-us/library/system.collections.bitarray(v = vs.110).aspx)那樣執行此操作,因此您正在處理的內容 – jrbeverly
你知道[Flags](https://msdn.microsoft.com/en-us/library/system.flagsattribute(v = vs.110).aspx)的枚舉和[Enum.HasFlag](https:// msdn.microsoft.com/en-us/library/system.enum.hasflag(v=vs.110).aspx)檢查設置位? –
由於@Toxantron在下面的答案中寫道,標誌枚舉將更適合於此(因爲它們基本上是整型標誌)並且不需要具有多個布爾屬性。請記住,每個'bool'字段在.NET中佔用1個字節,因此如果您可以將這些標誌打包在單個「Int32」枚舉中(4個字節),它的傳遞效率也會更高。 **另一方面**,請注意,枚舉不能像類一樣擴展(繼承),這就是爲什麼人們有時會[使用你的方法](http://stackoverflow.com/q/757684/69809),或者其他方式允許未來的擴展。 – Groo