设置和获取属性和常量的区别

Set and get properties and constants differences

以下声明之间是否有任何区别(除了 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; } }
}

诚然,从 调用 代码的角度来看,这真的无关紧要 - 在所有情况下,您暴露的 属性 总是 return 相同的值。

如果您想要 Foo3 的等价物而没有 const,您可以使用:

public static int Foo4 => 10;