菜单
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP 如何 W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA 生成式 AI SCIPY AWS 网络安全 数据科学
     ❯   

C# 属性(Get 和 Set)


属性和封装

在开始解释属性之前,您应该对“封装”有基本的了解。

封装的含义是确保“敏感”数据对用户隐藏。为了实现这一点,您必须:

  • 将字段/变量声明为 private
  • 通过属性提供 public getset 方法,以访问和更新 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);
  }
}

输出将是:

利亚姆

自己动手试一试 »



自动属性(简写)

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);
  }
}

输出将是:

利亚姆

自己动手试一试 »


为什么使用封装?

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

×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持