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 将被其实际值 'Some String' 替换,并且编译将继续进行,就好像使用了文字一样。

对 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 回答