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