5

我是新手,我正在尝试学习 C# 的基础知识。这听起来可能很微不足道,可能很愚蠢,但这是一个疑问。在浏览应用程序的一个源代码时,我在一个类中看到了一段代码

private string fname;
public string FirstName
{
    get
    {
       return fname
    }
    set
    {
       fname = value;
    }
}

谁能告诉我是什么意思。我知道当我们声明一个类时,我们fname使用别名访问FirstName。如果是出于某种安全目的,那又如何呢?

4

5 回答 5

6

这段代码也等价于:

public string FirstName { get; set; }

这样做是定义一个property. 在 C# 中,属性为 private 提供封装fields

于 2013-03-17T16:52:49.807 回答
3

您可以在属性上编写自定义逻辑。Fe,一些验证:

public string FirstName
{
    get
    {
       return fname;
    }
    set
    {
       if (value.Count(s => Char.IsDigit(s)) > 0)
       {
           throw new Exception("Only letters allowed");
       }
       fname = value;
    }
}
于 2013-03-17T16:55:14.750 回答
2

fname 是一个字段,具有私有可见性,但 FirstName 是一个公共属性,因此它将在类外部可见,并且可以在 get 和 set 方法中包含逻辑

于 2013-03-17T16:54:29.340 回答
0

它被称为属性(MSDN 文章)。使用它们的原因是封装访问某些类字段,以便将来能够在需要时轻松更改类行为。

这也相当于所谓的自动属性,因为此时的属性不添加任何逻辑:

public string FirstName { get; set; }
于 2013-03-17T16:53:54.157 回答
0

get 和 set 方法称为访问器(getters)和修改器(setters),这些方法用于访问和改变对象的属性,而不允许从类外部访问。看到变量 fname 的访问修饰符是私有的,这意味着它只能被类内的任何方法访问。

并注意 get 和 set 方法通常应该被赋予 public 访问修饰符,这使得该方法可以从任何外部类访问。

于 2013-03-17T16:56:38.733 回答