Menu
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO 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 GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

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

输出将是

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 方法)
  • 灵活:程序员可以更改代码的一部分而不会影响其他部分
  • 提高数据安全性

×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.