Const字段或获取属性

时间:2011-08-11 09:26:32

标签: c#

第一个和第二个定义之间有什么区别?

//1
private static string Mask
{
   get { return "some text"; }
}

//2 
private const string Mask  = "some text"; 

第一种和第二种方法有哪些好处?

3 个答案:

答案 0 :(得分:11)

只要它们是私有的,它们可能会被优化为或多或少相同的代码。如果它们是公开的并且可以从其他集合中使用,那么它就是另一个故事。

const个变量将使用const表达式替换/内联在其他程序集中。这意味着如果更改表达式,则需要使用const表达式重新编译每个程序集。另一方面,属性解决方案将在每次使用时为您提供方法调用开销。

答案 1 :(得分:4)

基本上const字段值在编译时评估,并且仅在声明时初始化。 同样重要的是它们存储在assembly metadata中,因此当您跨客户分发程序集然后给它们更新版本时可能会出现问题,因此需要重新编译引用const的程序集以获取更新的程序集价值也是如此。

简而言之,static字段就像一个全局变量,可以在不实例化底层类型的任何实例的情况下访问,但在您的情况下private访问被修改使其无法访问它声明的类型

修改

关于常数的非常好的社区维基文章:Referencing constants across assemblies(自2013年6月起不再存在。)

答案 2 :(得分:0)

const是该语言的关键字。 1s定义,你不允许改变它。是的,该物业也描绘了相同的故事,但它可以有更多的结构。