const vs Func <string> </string>

时间:2012-08-02 16:02:08

标签: c#

在类中使用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 个答案:

答案 0 :(得分:4)

在编译时,Constants.SOME_STRING将被其实际值'Some String'取代,编译将继续,就像使用文字一样。

调用SomeString()仍然会导致对静态方法的堆栈调用。

答案 1 :(得分:3)

不需要对常量进行求值,因此可以获得轻微的性能提升。如果您确定此字符串不需要更改,请使用常量。

如果您认为某个逻辑可能需要在某个时间点生成某个逻辑,或者可能会从一个产品版本更改为下一个产品版本,请尝试使用属性。它为您提供了与Func<>相同的灵活性,但允许您使用语法语法,但并不意味着可能产生其他影响。

public string SomeString {get {return "Some String";}}

答案 2 :(得分:2)

常量被它们的值代替,它们在代码中被引用,因此它们更快。制作一个Func并在代码中调用它会增加函数调用并降低性能

答案 3 :(得分:2)

对于您展示的内容,请使用const。你的意图很清楚。

Func只是一个函数,表示为一个对象。您似乎需要一个函数,为什么要使用它?直接访问更容易理解,更多人会期待它。如果我看到了Func的用法,我肯定会做一次双重拍摄。