由于性能问题,我非常困惑,使用Const
或resx
的最佳方法是什么。两者都在编译时使用C#
。我提出的正常问题不是语言的依赖。哪一个是最好的方法Const或Resources(resx)
任何人都可以深入解释吗?
由于性能问题,我非常困惑,使用Const
或resx
的最佳方法是什么。两者都在编译时使用C#
。我提出的正常问题不是语言的依赖。哪一个是最好的方法Const或Resources(resx)
任何人都可以深入解释吗?
如果您的资源是区域设置或语言特定的,请使用resx
。由于您可以为每种语言和区域设置单独使用resx,例如用户显示的字符串。
使用Consts
如果它的语言环境和语言也是中性的。例如内部软件包名称,对任何不向用户显示的字符串或与语言无关的引用。
要显示给用户的文本应该在资源中,因为它允许您迎合多语言应用程序。那里有很多examples。 如果常量仅用于程序流程的内部,那么它们可以是常量 - 尽管连接字符串在配置文件中更好,因为它们会改变。
你的问题很普遍,但希望下面的评论可以帮助一下:
你,当你有一组对象的某些属性可以取的值一般使用常量。它们被用于限制编码的简化和易懂,例如如果你有状态常量(Open = 1,Closed = 2),代码更容易编写而不会出错,并理解你是否使用有意义的名称,如Open或Closed,而不是数字1和2.常量不会给你不同的值为不同的语言(文化)。
当您必须将系统本地化为不同语言时,资源最为有用。根据当前的文化,相同的属性会返回不同的文本。
如果您的值与程序相关,则比使用Const。 如果您的值与UI相关(例如)使用resx。
Const为喜欢文字值
const string strMsg = "test message";
MessageBox.Show(strMsg);
在C#编译这个就会变成
MessageBox.Show("test message");
意味着C#将取代常量名strMsg到包含在strMsg字面值,在性能上,这将是更快。
RESX是在应用程序中的空间,你的价值存储和使用名作为关键字必须先读,在性能上它有一个额外的开销比常量
例如
ResourceManager rm = new ResourceManager("ResourceFileName",this.GetType().Assembly);
string str=rm.GetString("Keyname");
对于最好的办法 如果你的目标多语言使用RESX更多细节see this question
使用常量,如果你的应用程序没有特定的语言或const值是数字