Bob*_*Bob 18 c# readonly-attribute
这些陈述是否意味着同样的事情?
int x { get; }
readonly int x;
Run Code Online (Sandbox Code Playgroud)
JLW*_*low 23
在回答你的问题:有是只读的,{获得之间的差异; }:
在int x { get; }(由于没有办法设置x而无法编译 - 我认为你需要public int x { get; private set; })你的代码可以不断改变x
在readonly int x;,x在构造函数或内联中初始化,然后永远不会更改.
Joh*_*lph 12
readonly int x;在类上声明一个只读字段.此字段只能在构造函数中指定,并且它的值不能在类的生命周期中更改.
int x { get; }声明一个只读自动实现的属性,并且在这种形式下,无效(因为你无法设置该值).普通的只读属性不保证每次调用时都返回相同的值.该值可以在整个生命周期中发生变化.例如:
public int RandomNumber
{
get { return new Random().Next(100); }
}
Run Code Online (Sandbox Code Playgroud)
每次调用它时都会返回不同的数字.(是的,这是一种可怕的滥用财产).