I understand that it must at least be 1 byte to be memory addressable (see here), but I don't understand why a string character is 2 bytes (I'm aware that a character is two bytes because that is the space required to store a Unicode character), but a boolean is allocated 4 bytes. I've read the docs and am still unclear why this is the case.
Also, a Google search for System.Boolean size told me that it's to do with memory alignment. It's faster to push around a four-byte Int32 than it is to work with individual bytes/bits. If that is the case though, then why would a single string char still only be represented with 2 bytes?
Any ideas?