C# 属性(获取和设置)


属性和封装

在我们开始解释属性之前,您应该对“封装”。

的含义封装,是为了确保 "sensitive" 数据对用户隐藏。为了实现这一目标,您必须:

  • 将字段/变量声明为private
  • 提供publicgetset方法,通过特性,访问并更新 a 的值private字段

特性

您从上一章中了解到private变量只能在同一个类中访问(外部类无法访问它)。然而,有时我们需要访问它们——这可以通过属性来完成。

属性就像变量和方法的组合,它有两个方法:get和一个set方法:

示例

class Person
{
  private string name; // field

  public string Name   // property
  {
    get { return name; }   // get method
    set { name = value; }  // set method
  }
}

示例解释

这个Name属性与name场地。最好对属性和私有字段使用相同的名称,但首字母大写。

这个get方法返回变量的值name

这个set方法分配一个valuename多变的。这value关键字代表我们分配给属性的值。

如果你还没有完全理解,请看下面的例子。

现在我们可以使用Name属性来访问和更新private的领域Person类:

示例

class Person
{
  private string name; // field
  public string Name   // property
  {
    get { return name; }
    set { name = value; }
  }
}

class Program
{
  static void Main(string[] args)
  {
    Person myObj = new Person();
    myObj.Name = "Liam";
    Console.WriteLine(myObj.Name);
  }
}

输出将是:

Liam

亲自试一试 »



自动属性(简写)

C#还提供了一种使用简写/自动属性的方法,您不必为属性定义字段,而只需编写get;set;物业内。

以下示例将产生与上面示例相同的结果。唯一的区别是代码更少:

示例

使用自动属性:

class Person
{
  public string Name  // property
  { get; set; }
}

class Program
{
  static void Main(string[] args)
  {
    Person myObj = new Person();
    myObj.Name = "Liam";
    Console.WriteLine(myObj.Name);
  }
}

输出将是:

Liam

亲自试一试 »


为什么要封装?

  • 更好地控制类成员(减少你自己(或其他人)搞乱代码的可能性)
  • 可以制作字段只读(如果您只使用get方法),或只写(如果您只使用set方法)
  • 灵活:程序员可以更改代码的一部分而不影响其他部分
  • 提高数据安全性