为了账号安全,请及时绑定邮箱和手机立即绑定

只有只读属性的字段还可以给字段赋值,那只读还有什么意义?

只有只读属性的字段还可以给字段赋值,那只读还有什么意义?

FFIVE 2019-03-20 18:15:39
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可以对外访问但是不能复制(属于叫公有只读属性)

查看完整回答
反对 回复 2019-04-22
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

private这个访问修饰符的意思是“私有的”,不能理解成“只读”,当前类本身肯定可以对这个私有的成员变量进行赋值操作


查看完整回答
反对 回复 2019-04-22
?
慕姐8265434

TA贡献1813条经验 获得超2个赞

设置只读属性是为了让字段无法在类外部被改变。。。


查看完整回答
反对 回复 2019-04-22
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

有种 类型 叫private


查看完整回答
反对 回复 2019-04-22
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

很明显, 你想说的只读是Speed而不是speed, 大小写弄错了


查看完整回答
反对 回复 2019-04-22
?
达令说

TA贡献1821条经验 获得超6个赞

Speed和speed是两个不同的东西
Speed是个属性,是对外部的接口,因为只实现了get,所以从外部看,这个属性是只读的。
但在内部,你依然可以直接对speed成员变量赋值。

如果想把Speed变成“真正的只读属性”,需要把成员变量speed定义成只读成员变量

private readonly double speed;


查看完整回答
反对 回复 2019-04-22
?
千万里不及你

TA贡献1784条经验 获得超9个赞

只读是针对外面的类访问的,类内部是可以对其进行赋值的。


查看完整回答
反对 回复 2019-04-22
  • 7 回答
  • 0 关注
  • 677 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信