设置并获取属性和常量差异

时间:2016-04-15 19:29:19

标签: c# syntax properties const readonly

以下声明之间是否有任何区别(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,所以我也会问它是否实际上是常量?

1 个答案:

答案 0 :(得分:4)

foo2相同。与foo3的区别在于,属性访问权限甚至不会咨询foo3 - Foo3被编译为等同于

的代码
public static int Foo3
{
    { get { return 9; } }
}

现在无可否认,从调用代码的角度来看,它确实没关系 - 在所有情况下,你都会暴露一个总会返回相同值的属性。

如果您想要Foo3而不是const,则可以使用:

public static int Foo4 => 10;