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

发布于 2022-09-03 08:07:08 字数 493 浏览 16 评论 0

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;
            }
        }
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

彩扇题诗 2022-09-10 08:07:08

没有什么叫只读字段,你所说得赋值是类的私有成员,对外不可访问。
而Speed是对外公共的属性,属性有set和get,当没有设置set的时候表示这个属性是只读的不能改写。
speed在Car类下都可以访问和赋值,但是不能外部访问,Speed可以对外访问但是不能复制(属于叫公有只读属性)

眼藏柔 2022-09-10 08:07:08

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

怎会甘心 2022-09-10 08:07:08

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

紅太極 2022-09-10 08:07:08

有种 类型 叫private

意犹 2022-09-10 08:07:08

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

掩于岁月 2022-09-10 08:07:08

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

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

private readonly double speed;
少年亿悲伤 2022-09-10 08:07:08

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文