Just wondering why do we have char
type of 2 bytes size in C# (.NET) unlike 1 byte in other programming languages?
The size of char is 1 byte, and wikipedia says: sizeof is used to calculate the size of any datatype, measured in the number of bytes required to represent the type. However, i can store 11 bytes in unsigned char array[10] 0..
Most of the textbooks say integer variables occupy 2 bytes.
A char is unicode in C#, therefore the number of possible characters exceeds 255. So you'll need two bytes.
Extended ASCII for example has a 255-char set, and can therefore be stored in one single byte. That's also the whole purpose of the System.Text.Encoding
namespace, as different systems can have different charsets, and char sizes. C# can therefore handle one/four/etc. char bytes, but Unicode UTF-16 is default.
I'm guessing with “other programming languages” you mean C. C has actually two different char
types: char
and wchar_t
. char
may be one byte long, wchar_t
not necessarily.
In C# (and .NET) for that matter, all character strings are encoded as Unicode in UTF-16. That's why a char
in .NET represents a single UTF-16 code unit which may be a code point or half of a surrogate pair (not actually a character, then).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With