Search code examples
c#encodingasciiencoding

Encoding.ASCII vs. new ASCIIEncoding()


If I use:

A) var targetEncodingA = Encoding.ASCII;

and

B) var targetEncodingB = new ASCIIEncoding();

then both targetEncoding0 and targetEncoding1 are of the same type.

Are there any preferred scenarios and/or advantages/disadvantages when to use A or B?

(besides creating new instance by constructor each time I use it)


Solution

  • Here is the Encoding.ASCII implement detail (from Encoding.cs):

    private static volatile Encoding asciiEncoding;
    
    public static Encoding ASCII
    {
      {
        if (Encoding.asciiEncoding == null)
          Encoding.asciiEncoding = (Encoding) new ASCIIEncoding();
        return Encoding.asciiEncoding;
      }
    }
    

    The main difference is the return type differs, which depends on what type you wish to use (ASCIIEncoding vs Encoding), and Encoding is the base class.

    From a performance perspective, Encoding.ASCII is the preference.