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

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

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

C#
Smart猫小萌 2021-08-22 15:15:34
我正在观看有关 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. 是否有更短的设置属性(我是否在正确的轨道上)
查看完整描述

1 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

您可以使用=> 表达浓郁的成员语法作为快捷方式的只读属性在C#6.0(你不能用使用它们set),并在C#7.0它们扩展到包括set存取,你必须在你的代码(这需要后盾字段,也如您所见)。


很可能您使用的是 C#6,因此您会收到set语法错误。


您询问了如何缩短代码,并且由于您不需要私有支持成员(您没有修改setorget访问器中的值),因此摆脱它们并仅使用auto-实现了用户可以设置的属性。然后您可以使用=>该Volume属性,因为它应该是只读的(因为它是一个计算字段):


我相信这是您所描述的课程的最短代码:


class Box

{

    public int Length { get; set; }

    public int Height { get; set; }

    public int Width { get; set; }

    public int Volume => Height * Width * Length;


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

    {

        Length = length;

        Height = height;

        Width = width;

    }


    public void DisplayInfo()

    {

        Console.WriteLine("Length = {0}, Height = {1}, Width = {2}, Volume = {3}", 

            Length, Height, Width, Volume);

    }


}


查看完整回答
反对 回复 2021-08-22
  • 1 回答
  • 0 关注
  • 423 浏览

添加回答

举报

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