C#设置和获取快捷方式属性

我正在观看有关 C# 的教学视频,他们显示了一个快捷方式(键入“prop”,tab 两次)它会生成这个


public int Height { get; set; }

于是他走了一条关于使用 => 而不是这个的捷径。它试图将两者结合起来,但在 Length 中出现错误:


    class Box

{

    private int length;

    private int height;

    private int width;

    private int volume;


    public Box(int length, int height, int width)

    {

        this.length = length;

        this.height = height;

        this.width = width;

    }



    public int Length { get => length; set => length = value; } // <-error

    public int Height { get; set; }

    public int Width { get; set; }

    public int Volume { get { return Height * Width * Length; } set { volume = value; } }


    public void DisplayInfo()

    {

        Console.WriteLine("Length is {0} and height is {1} and width is {2} so the volume is {3}", length, height, width, volume = length * height * width);

    }


}

Volume 工作正常,但我有兴趣看看我是否可以像尝试使用 Length 那样缩短代码。


我做错了什么,可以那样做吗?2. 是否有更短的设置属性(我是否在正确的轨道上)


Smart猫小萌
浏览 424回答 1
1回答

守候你守候我

您可以使用=> 表达浓郁的成员语法作为快捷方式的只读属性在C#6.0(你不能用使用它们set),并在C#7.0它们扩展到包括set存取,你必须在你的代码(这需要后盾字段,也如您所见)。很可能您使用的是 C#6,因此您会收到set语法错误。您询问了如何缩短代码,并且由于您不需要私有支持成员(您没有修改setorget访问器中的值),因此摆脱它们并仅使用auto-实现了用户可以设置的属性。然后您可以使用=>该Volume属性,因为它应该是只读的(因为它是一个计算字段):我相信这是您所描述的课程的最短代码:class Box{&nbsp; &nbsp; public int Length { get; set; }&nbsp; &nbsp; public int Height { get; set; }&nbsp; &nbsp; public int Width { get; set; }&nbsp; &nbsp; public int Volume => Height * Width * Length;&nbsp; &nbsp; public Box(int length, int height, int width)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; Length = length;&nbsp; &nbsp; &nbsp; &nbsp; Height = height;&nbsp; &nbsp; &nbsp; &nbsp; Width = width;&nbsp; &nbsp; }&nbsp; &nbsp; public void DisplayInfo()&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; Console.WriteLine("Length = {0}, Height = {1}, Width = {2}, Volume = {3}",&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Length, Height, Width, Volume);&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP