속성은 클래스, 구조체 및 인터페이스의 멤버로 명명될 수 있습니다. 이는 비공개 필드의 값을 읽고 쓰거나 계산할 수 있는 유연한 메커니즘을 제공합니다. 실제로 비공개 필드의 값을 읽고, 쓰고, 조작할 수 있도록 "접속자"의 특수 메서드를 정의합니다.
좀 더 생생하게 표현해 보겠습니다. 예를 들어 외부 세계에서 개인 멤버 개인 문자열 이름으로 개인 클래스를 정의하고, 개인 객체 per를 인스턴스화하고, per의 이름을 요청하고, 이를 출력합니다. 이름. per.name에 값을 할당한 다음 출력하시겠습니까? ? 이전 연구를 통해 우리는 클래스의 private 수정 변수에 외부 객체가 접근할 수 없다는 것을 알았습니다(per.name="HC666"^_^로는 직접 접근할 수 없습니다). getname 메소드는 쓰기 및 출력을 위한 매개변수로 "HC666"을 사용하는데, 이때 "attributes"가 나타나야 합니다. 이름.
"접속자"
속성의 접근자에는 속성을 가져오거나 설정하는 실행 가능한 명령문이 포함되어 있습니다. 접근자의 선언에는 get 접근자(읽기 전용을 나타냄) 또는 집합이 포함될 수 있습니다. 접근자(쓰기 전용을 의미) 또는 둘 다(읽기와 쓰기를 모두 의미). (위 예에서는 get 접근자를 사용하여 이름을 출력하고 set 접근자를 사용하여 작성합니다.)
속성 정의:
위 예에서는 다음을 정의할 수 있습니다. name 읽기-쓰기 속성 Name에는 외부 개체에서 액세스할 수 있는 공개 수정자
private string name; //声明name变量 public string Name //声明变量的属性,读写 { get { return name; } //定义读访问器,其实就是一个方法 set { name = value; } //定义写访问器,set 方法有一个隐含的参数value }
를 사용합니다. 그런 다음 읽기 전용 속성을 정의합니다. 예를 들어 age는 고정된 읽기 전용
입니다.private uint age=10; //声明变量 age private string Age //声明变量的属性,只读 { get { return age; } //读访问器 }
속성 인스턴스:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test1 { class person { //定义变量name,并且为name定义一个读写属性 private string name; //定义属性 public string Name {//访问器 get { return name; } set { name = value; } //set自带一个value参数 } //定义变量age,并且为age定义一个只读属性 private uint age=10; public uint Age { get { return age; } } } class Program { static void Main(string[] args) { person per = new person(); per.Name = "HC666"; //执行写入属性 Console.WriteLine("我的名字叫:{0}\t今年 {1} 岁了",per.Name,per.Age); //读属性 } } }
결과:
추상 속성:
앞에서 언급한 대로 , 속성은 클래스를 만들 수 있으며, 구조 및 인터페이스의 멤버는 자연스럽게 추상 클래스의 추상 속성일 수도 있습니다. 추상 메서드와 같은 추상 속성은 파생 클래스에서 구현됩니다.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test1 {//定义一个person抽象类 abstract class person {//定义抽象属性 public abstract string Name {//读写 get; set; } public abstract uint Age {//只读 get; } } //定义派生类 class student : person { private string name; private uint age=10; //实现抽象属性 public override string Name { get { return name ; } set { name=value; } } public override uint Age { get { return age; } } } class Program { static void Main(string[] args) { student stu = new student(); stu.Name = "HC666"; //执行写入属性 Console.WriteLine("我的名字叫:{0}\t今年 {1} 岁了",stu.Name,stu.Age); //读属性 } } }
결과는 이전 예시와 동일합니다.
위 내용은 C# 학습일기 27---속성입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!