Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 设置并获取属性和常量差异_C#_Syntax_Properties_Constants_Readonly - Fatal编程技术网

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

C# 设置并获取属性和常量差异,c#,syntax,properties,constants,readonly,C#,Syntax,Properties,Constants,Readonly,以下声明之间是否有任何差异(除了常量和静态只读之间的差异) foo1在幕后会发生什么?它与foo2或foo3相同吗 我问的是foo1,因为我不能用这种语法使它成为const或readonly,所以我还问它是否是一个常量?它与foo2相同。与foo3的区别在于,属性访问甚至不会咨询foo3-foo3被编译成与 public static int Foo3 { { get { return 9; } } } 现在不可否认,从调用代码的角度来看,这其实并不重要——在所有情况下,您都公开了一个

以下声明之间是否有任何差异(除了
常量
静态只读
之间的差异)

foo1
在幕后会发生什么?它与
foo2
foo3
相同吗


我问的是
foo1
,因为我不能用这种语法使它成为
const
readonly
,所以我还问它是否是一个常量?

它与
foo2
相同。与
foo3
的区别在于,属性访问甚至不会咨询
foo3
-
foo3
被编译成与

public static int Foo3
{
    { get { return 9; } }
}
现在不可否认,从调用代码的角度来看,这其实并不重要——在所有情况下,您都公开了一个始终返回相同值的属性

如果您想要等效的
Foo3
而不使用
const
,您可以使用:

public static int Foo4 => 10;

好了,现在我冷静下来了,我看到C#中的
const
类似于一个程序集标签,因此如果在实例化对象时要给它赋值,就不能使用它。有点奇怪的是,使用
foo1
时,语法不是所见即所得(与其他语言相比,C#真的很像)。@kuhaku:恐怕我真的一点也不明白你的评论。。。但是
foo1
只是一个只读的自动实现属性,初始值为9。但是,可以在构造函数中更改该值。
public static int Foo4 => 10;