How to know the size of the string in bytes?

You can use encoding like ASCII to get a character per byte by using the System.Text.Encoding class.

or try this

  System.Text.ASCIIEncoding.Unicode.GetByteCount(string);
  System.Text.ASCIIEncoding.ASCII.GetByteCount(string);

System.Text.ASCIIEncoding.Unicode.GetByteCount(yourString);

Or

System.Text.ASCIIEncoding.ASCII.GetByteCount(yourString);

From MSDN:

A String object is a sequential collection of System.Char objects that represent a string.

So you can use this:

var howManyBytes = yourString.Length * sizeof(Char);

How many bytes a string will take depends on the encoding you choose (or is automatically chosen in the background without your knowledge). This sample code shows the difference:

void Main()
{
    string text = "a🡪";
    Console.WriteLine("{0,15} length: {1}", "String", text.Length);

    PrintInfo(text, Encoding.ASCII); // Note that '🡪' cannot be encoded in ASCII, information loss will occur
    PrintInfo(text, Encoding.UTF8); // This should always be your choice nowadays
    PrintInfo(text, Encoding.Unicode);
    PrintInfo(text, Encoding.UTF32);
}

void PrintInfo(string input, Encoding encoding)
{
    byte[] bytes = encoding.GetBytes(input);

    var info = new StringBuilder();
    info.AppendFormat("{0,16} bytes: {1} (", encoding.EncodingName, bytes.Length);
    info.AppendJoin(' ', bytes);
    info.Append(')');

    string decodedString = encoding.GetString(bytes);
    info.AppendFormat(", decoded string: \"{0}\"", decodedString);

    Console.WriteLine(info.ToString());
}

Output:

         String length: 3
        US-ASCII bytes: 3 (97 63 63), decoded string: "a??"
 Unicode (UTF-8) bytes: 5 (97 240 159 161 170), decoded string: "a🡪"
         Unicode bytes: 6 (97 0 62 216 106 220), decoded string: "a🡪"
Unicode (UTF-32) bytes: 8 (97 0 0 0 106 248 1 0), decoded string: "a🡪"