3

クラスで const または Func を使用する利点または違いはありますか?

public sealed class Constants {
  private Constants() {}
  public const string SOME_STRING = "Some String";
  public static Func<string> SomeString = () => "Some String";
}


Debug.WriteLine(Constants.SOME_STRING);
Debug.WriteLine(Constants.SomeString());
4

4 に答える 4

4

コンパイル時に、Constants.SOME_STRINGは実際の値の「SomeString」に置き換えられ、リテラルが使用されたかのようにコンパイルが続行されます。

SomeString()を呼び出しても、静的メソッドへのスタック呼び出しが発生します。

于 2012-08-02T16:04:14.827 に答える
3

定数を評価する必要がないため、パフォーマンスがわずかに向上します。この文字列を変更する必要がないことが確実な場合は、定数を使用してください。

将来のある時点で値を何らかのロジックで生成する必要があると思われる場合、または製品バージョンごとに値が変わる可能性がある場合は、代わりにプロパティを使用してみてください。これにより、同じ程度の柔軟性が得られますが、Func<>他の効果が生じる可能性を示唆しない構文構文を使用できます。

public string SomeString {get {return "Some String";}}
于 2012-08-02T16:04:45.147 に答える
2

定数は、コードで参照される値に置き換えられるため、高速になります。Funcを作成してコードで呼び出すと、関数呼び出しが増加し、パフォーマンスが低下します

于 2012-08-02T16:05:07.310 に答える
2

表示した内容には、を使用しconstます。あなたの意図はそのように明確です。

AFuncは単なる関数であり、オブジェクトとして表されます。関数は必要ないようですが、なぜ関数を使用するのですか?直接アクセスは理解しやすく、より多くの人々がそれを期待します。Funcの使用法を見たら、間違いなくダブルテイクをします。

于 2012-08-02T16:05:16.730 に答える