嘿伙计们,我是 C# 的新手。我在读这本书,这个填空说__是不能修改值的数据字段或局部变量?有人可以告诉我答案吗?谢谢。ps:总新手我搜索了youtube,但我在代码中搞砸了。谢谢。
问问题
904 次
2 回答
3
完整的答案是双重的:
1)对于原始类型(如int
, double
,string
等)const
可以使用修饰符,这确实意味着该类型的变量的值不能以任何方式改变
2) 对于非原始类型,readonly
存在修饰符。请注意,您不能应用于const
非原始类型。对于引用类型和值类型,这意味着同样的事情:对这个变量的
引用在这个对象的构造之后不能被改变。但是,它有不同的后果:
2.1)readonly
对象本身可以通过其公共 API 进行更改。例如:
class Foo{
private readonly List<int> list;
public Foo(){ list = new List<int>();}
public Test()
{
list = new List<int>(); // invalid; your reference is readonly
list.add(5);//works, you are changing the object, but not touching it's reference
}
}
2.2) 对于值类型readonly
,在使用修饰符时必须小心readonly
——它可能会导致可变结构的细微错误。请参阅C#:为什么只读结构上的突变不会中断?例如。但是,如果您struct
是不可变的,则您可以有效地获得const
关键字的语义
于 2013-09-23T16:22:28.887 回答
2
答案是常量。这是链接阅读此
于 2013-09-23T16:14:39.477 回答