设置和获取属性和常量的区别
Set and get properties and constants differences
以下声明之间是否有任何区别(除了 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; } }
}
诚然,从 调用 代码的角度来看,这真的无关紧要 - 在所有情况下,您暴露的 属性 总是 return 相同的值。
如果您想要 Foo3
的等价物而没有 const
,您可以使用:
public static int Foo4 => 10;
以下声明之间是否有任何区别(除了 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; } }
}
诚然,从 调用 代码的角度来看,这真的无关紧要 - 在所有情况下,您暴露的 属性 总是 return 相同的值。
如果您想要 Foo3
的等价物而没有 const
,您可以使用:
public static int Foo4 => 10;