猿问

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

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;

            }

        }

    }

}


FFIVE
浏览 678回答 7
7回答

慕侠2389804

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

慕姐4208626

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

慕姐8265434

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

繁星点点滴滴

有种 类型 叫private

眼眸繁星

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

达令说

Speed和speed是两个不同的东西Speed是个属性,是对外部的接口,因为只实现了get,所以从外部看,这个属性是只读的。但在内部,你依然可以直接对speed成员变量赋值。如果想把Speed变成“真正的只读属性”,需要把成员变量speed定义成只读成员变量private readonly double speed;

千万里不及你

只读是针对外面的类访问的,类内部是可以对其进行赋值的。
随时随地看视频慕课网APP

相关分类

Java
我要回答