哪一个是最好的方法Const或资源(resx)

时间:2013-12-17 09:10:48

标签: c# constants resx

由于性能受到影响,我感到非常困惑,使用Constresx的最佳方法是什么。两者都在C#的编译时使用。我问的是普通问题而不是语言依赖。

任何人都可以深入解释吗?

5 个答案:

答案 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