C# 属性 (Get 和 Set)
属性和封装
在我们开始解释属性之前,您应该对“封装”有一个基本的了解。
封装的含义是确保“敏感”数据对用户隐藏。 为此,您必须
- 将字段/变量声明为
private
- 通过属性提供
public
get
和set
方法来访问和更新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
方法将 value
分配给 name
变量。 value
关键字表示我们分配给属性的值。
如果您没有完全理解,请查看下面的示例。
现在我们可以使用 Name
属性来访问和更新 Person
类的 private
字段
示例
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
方法) - 灵活:程序员可以更改代码的一部分而不会影响其他部分
- 提高数据安全性