以下声明之间是否有任何区别(const
和static readonly
之间的差异除外)?
public static int foo1 { get; } = 8;
private static readonly int foo2 = 4;
public static int Foo2
{
get { return foo2; }
}
private const int foo3 = 9;
public static int Foo3
{
get { return foo3;}
}
foo1
幕后会发生什么?它与foo2
或foo3
相同吗?
我问foo1
,因为我无法使用此语法将其设为const
或readonly
,所以我也会问它是否实际上是常量?
答案 0 :(得分:4)
与foo2
相同。与foo3
的区别在于,属性访问权限甚至不会咨询foo3
- Foo3
被编译为等同于
public static int Foo3
{
{ get { return 9; } }
}
现在无可否认,从调用代码的角度来看,它确实没关系 - 在所有情况下,你都会暴露一个总会返回相同值的属性。
如果您想要Foo3
而不是const
,则可以使用:
public static int Foo4 => 10;