I challenge the need for a list of booleans. There are alternatives available in the .NET Framework that deal with a sequence of booleans. ---------- If the flags are static and fixed: [Flags] enum IGreetYou : uint { None = 0, Hi = 1 << 0, Hello = 1 << 1, Yow = 1 << 2 } with a simple conversion to string as: var value = IGreetYou.Hi | IGreetYou.Hello; var asString = Convert.ToString((uint)value, 2); // 11 ---------- If the size of the collection is dynamic: - [BitArray][1] ---------- If the size of the collection is fixed: - [BitVector32][2] [1]: https://docs.microsoft.com/en-us/dotnet/api/system.collections.bitarray?view=netframework-4.8 [2]: https://docs.microsoft.com/en-us/dotnet/api/system.collections.specialized.bitvector32?view=netframework-4.8