为什么使用get;并设置;在没有任何参数的属性中

本文关键字:参数 任何 属性 get 设置 为什么 | 更新日期: 2023-09-27 18:32:13

我最近一直在从书本中学习 C#,在解释属性后,我注意到它们使用的属性如下

public int AlertLevel { get; private set; }

我不明白你为什么要不通过任何论据就这样做?提前感谢您提供任何信息。

为什么使用get;并设置;在没有任何参数的属性中

属性实际上是 C# 中的方法。您在代码中显示的是自动实现的属性。这是一种酸糖:

// this backing field is generated by compiler
int alertLevel;
public int AlertLevel 
{
   get { return alertLevel; }
   private set { alertLevel = value; }  
}

这是另一个语法糖:

int alertLevel;
public int getAlertLevel()
{
    return alertLevel;
}
private void setAlertLevel(int value)
{
    alertLevel = value;
}

所以你写更少的代码,你会得到相同的行为。这就是重点。编译器为您完成艰苦的工作。

它们被称为自动属性。 这是句法糖。

它相当于:

private int alertLevel;
public int AlertLevel
{
  get { return alertLevel; }
  private set { alertLevel = value; }  
}

它允许从其他类访问值,但只能从类内部设置。

这样做

是为了将元素声明为具有辅助功能设置的可编辑属性,因此在集合上声明private。 您也可以在任何辅助属性上显式设置get;set;,并具有相同的效果。 这只是键入完整 getter-setter 关系的更快方法。

你列出的例子实际上非常方便。 如果您不希望其他类能够修改此属性,这比以下简单得多:

private int alertLevel;
public int AlertLevel
{
    get
    {
        return alertLevel;
    }
}

另一件事是设计器视图将识别属性并在智能感知中公开它们。