Const字段或get属性
本文关键字:属性 get 字段 Const | 更新日期: 2023-09-27 18:05:06
第一种和第二种定义的区别是什么?
//1
private static string Mask
{
get { return "some text"; }
}
//2
private const string Mask = "some text";
第一种方法和第二种方法有哪些好处?
只要它们是私有的,它们可能会被优化成或多或少相同的代码。如果它们是公共的,并从其他程序集使用,则是另一回事。
const
变量将在其他程序集中使用const
表达式替换/内联。这意味着如果您更改表达式,则需要使用const
表达式重新编译每个程序集。另一方面,每次使用属性解决方案都会给您带来方法调用开销。
基本上const
字段值在编译时求值,仅在声明时初始化。同样重要的一点是,它们存储在assembly metadata
中,所以当你在客户之间分发程序集,然后给他们更新版本时,可能会出现问题,所以他们需要重新编译引用const的程序集来获取更新的值。
简而言之,static
字段类似于一个全局变量,可以在不实例化任何底层类型的实例的情况下访问,但在您的情况下,private
访问修改使其在声明的类型之外不可访问。
关于常量的非常好的Community Wiki帖子:跨程序集引用常量(自2013年6月起不再存在)
const
是该语言的关键字。一旦定义好了,你就不允许改变它。是的,属性也描述了同样的故事,但它可以有更多的结构。
在const
中,一旦初始化就不能修改。get
也不能修改。但是当你有一个场景,你需要不同的值,每次调用Or,你的值取决于任何其他函数调用,get
将被使用。
private static string Mask
{
get
{
var someOtherMethodText = SomeOtherMethodText();
return "some text" + someOtherMethodText;
}
}