哪种方法是Const或Resources(resx)的最佳方法

本文关键字:方法 resx 最佳 Const Resources | 更新日期: 2024-10-22 10:17:16

由于性能问题,我非常困惑,使用Constresx的最佳方法是什么。两者都在C#中的编译时使用。我问的是一个正常的问题,而不是依赖语言的问题。

有人能深入解释吗?

哪种方法是Const或Resources(resx)的最佳方法

如果您的资源是特定于区域设置或语言的,请使用resx。因为您可以为每种语言和区域设置单独的resx,例如用户显示的字符串。

如果Consts的区域设置和语言也是中性的,请使用它。例如,内部包名称、对未向用户显示的任何字符串的引用或与语言无关。

要显示给用户的文本应该在资源中,因为它允许您满足多语言应用程序的需要。有很多例子。如果常量仅用于程序流的内部,那么它们可以是真正的常量——尽管像连接字符串这样的东西在配置文件中更好,因为它们确实会发生变化。

您的问题很一般,但希望下面的评论能有所帮助:

当您有一组对象的某个属性可以取的值时,通常会使用常量。它们用于限制编码,使编码更容易理解,例如,如果您有状态常量(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是应用程序中存储值的空间,必须使用名称作为密钥首先读取,在性能上,它比const 有额外的开销

例如

ResourceManager rm = new ResourceManager("ResourceFileName",this.GetType().Assembly);
string str=rm.GetString("Keyname");

最佳方法如果你的目标多语言使用Resx,有关更多详细信息,请参阅这个问题

如果您的应用程序不是特定于语言的,或者const值是数字,请使用const