以下声明之间有什么区别(除了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
,所以我也问它实际上是一个常量吗? 最佳答案
与foo2
相同。与foo3
的区别在于,属性访问甚至不参考foo3
-Foo3
被编译为与
public static int Foo3
{
{ get { return 9; } }
}
现在可以肯定的是,从调用代码的角度来看,这确实无关紧要-在所有情况下,您都将公开一个始终返回相同值的属性。
如果要与
Foo3
等效但不包含const
,则可以使用:public static int Foo4 => 10;