嘿伙计们我是c#的新手。我正在阅读这本书,这填补空白说__是数据字段或局部变量,其值无法修改?有人能告诉我答案吗?谢谢。 ps:总新手我搜索了youtube,但我在代码中搞砸了。 感谢。
答案 0 :(得分: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#: Why do mutations on readonly structs not break?。但是,如果您的struct
是不可变的,那么您将有效地获得const
关键字的语义
答案 1 :(得分:2)
答案是Const。 这是链接Read this