以下声明之间有什么区别(除了conststatic 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在后台发生了什么?与foo2foo3相同吗?

我问关于foo1的问题,因为我不能使用这种语法将其设为constreadonly,所以我也问它实际上是一个常量吗?

最佳答案

foo2相同。与foo3的区别在于,属性访问甚至不参考foo3-Foo3被编译为与

public static int Foo3
{
    { get { return 9; } }
}


现在可以肯定的是,从调用代码的角度来看,这确实无关紧要-在所有情况下,您都将公开一个始终返回相同值的属性。

如果要与Foo3等效但不包含const,则可以使用:

public static int Foo4 => 10;

10-06 13:29