5

私が使用する場合:

A)var targetEncodingA = Encoding.ASCII;

B)var targetEncodingB = new ASCIIEncoding();

targetEncoding0 と targetEncoding1 の両方が同じタイプです。

A または B を使用する場合に推奨されるシナリオおよび/または利点/欠点はありますか?

(コンストラクターを使用するたびに新しいインスタンスを作成する以外に)

4

2 に答える 2

9

Encoding.ASCII実装の詳細は次のとおりです (Encoding.cs から)。

private static volatile Encoding asciiEncoding;

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

主な違いは、戻り値の型が異なることです。これは、使用する型 ( ASCIIEncodingvs Encoding)によって異なりEncoding、基本クラスです。

パフォーマンスの観点からEncoding.ASCIIは、好みです。

于 2014-01-02T10:10:56.777 に答える
4

私はすべての場合で Encoding.ASCII を好みます。これは静的プロパティです。必要になるたびに新しいインスタンスを作成する必要がありません (シングルトン)。

個人的には、静的クラスがそれを行うことができる場合、可能であれば new キーワードの使用を避けます。Encoding.ASCII は、new ASCIIEncoding() よりも書き込みが短いことを付け加えておきます。

于 2014-01-02T10:02:13.543 に答える