由于性能受到影响,我感到非常困惑,使用Const
或resx
的最佳方法是什么。两者都在C#
的编译时使用。我问的是普通问题而不是语言依赖。
任何人都可以深入解释吗?
答案 0 :(得分:1)
如果您的资源是区域设置或特定语言,请使用resx
。因为您可以为每种语言和区域设置分别使用resx,例如用户显示的字符串。
如果语言环境和语言也是中性的,请使用Consts
。例如,内部包名称,对未显示给用户或与语言无关的任何字符串的引用。
答案 1 :(得分:1)
将要显示给用户的文本应该在资源中,因为它允许您满足多语言应用程序。那里有很多examples。 如果常量仅仅用于程序流内部,那么它们可以是真正的常量 - 尽管连接字符串之类的东西在配置文件中更好,因为它们会发生变化。
答案 2 :(得分:1)
你的问题非常笼统,但希望下面的评论能有所帮助:
当您拥有一组对象的某个属性可以采用的值时,通常使用常量。它们用于限制编码更容易和可理解,例如,如果你有状态常量(Open = 1,Closed = 2),代码更容易编写而没有错误,并理解你是否使用有意义的名称,如Open或Closed而不是数字1和2.常量不会给你不同的值对于不同的语言(文化)。
当您必须将系统本地化为不同语言时,资源最有用。根据当前的文化,相同的属性将返回不同的文本。
答案 3 :(得分:1)
如果您的值与程序相关,则使用Const。 如果与UI相关的值(例如)使用resx。
答案 4 :(得分:1)
Const就像字面值
const string strMsg = "test message";
MessageBox.Show(strMsg );
当c#编译时,它将变成
MessageBox.Show("test message");
意味着c#会将常量名称strMsg替换为strMsg中包含的文字值,在性能上会更快。
Resx是应用程序中存储值的空间,必须首先使用名称作为键来读取,在性能方面它有额外的开销而不是const
e.g。
ResourceManager rm = new ResourceManager("ResourceFileName",this.GetType().Assembly);
string str=rm.GetString("Keyname");
为了最好的方法 如果您的定位多语言使用Resx,请获取更多详细信息see this question
如果您的应用程序不是特定语言或const值是数字
,请使用const