class Program{ static void Main(string[] args) { Car car = new Car(); car.DoSmothing(120); Console.WriteLine(car.Speed); Console.Read(); } class Car { private double speed; public void DoSmothing(int sp) { this.speed = sp;//为什么还可给只读字段赋值? } public double Speed { get { return speed; } } }}
7 回答
慕侠2389804
TA贡献1719条经验 获得超6个赞
没有什么叫只读字段,你所说得赋值是类的私有成员,对外不可访问。
而Speed是对外公共的属性,属性有set和get,当没有设置set的时候表示这个属性是只读的不能改写。
speed在Car类下都可以访问和赋值,但是不能外部访问,Speed可以对外访问但是不能复制(属于叫公有只读属性)
达令说
TA贡献1821条经验 获得超6个赞
Speed和speed是两个不同的东西
Speed是个属性,是对外部的接口,因为只实现了get,所以从外部看,这个属性是只读的。
但在内部,你依然可以直接对speed成员变量赋值。
如果想把Speed变成“真正的只读属性”,需要把成员变量speed定义成只读成员变量
private readonly double speed;
添加回答
举报
0/150
提交
取消