在类中使用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());
答案 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的用法,我肯定会做一次双重拍摄。