찾다
类库下载C#类库C# 속성 접근자

C# 속성 접근자

Oct 13, 2016 pm 04:31 PM

속성의 접근자에는 속성을 가져오거나 설정하는 것과 관련된 실행 가능한 명령문이 포함되어 있습니다. 접근자 선언에는 get 접근자, set 접근자 또는 둘 다가 포함될 수 있습니다. 선언은 다음 형식 중 하나를 사용합니다.

get {}
set {}

get 접근자:
get 접근자 본문은 메서드 본문과 유사합니다. 속성 유형의 값을 반환해야 합니다. get 접근자를 실행하는 것은 필드 값을 읽는 것과 같습니다.

다음은 비공개 필드 이름의 값을 반환하는 get 접근자입니다.

private string name;  // the name field
 
public string Name  // the Name 
 
property
{    
   get
   {       
       return name;
   }
}

속성이 참조되면 속성이 참조되지 않는 한 속성을 읽기 위해 get 접근자가 호출됩니다. 가치의 대상.

예:

Employee e1 = new Employee();
 ...
 Console.Write(e1.Name); // The get accessor is invoked here

get 접근자는 return 또는 throw 문으로 종료되어야 하며 제어는 접근자 본문 이상으로 확장될 수 없습니다.



set 접근자:
set 접근자는 void를 반환하는 메서드와 유사합니다. value라는 암시적 매개변수를 사용하며, 이 매개변수의 유형은 속성의 유형입니다.

다음 예에서는 Set 접근자가 Name 속성에 추가됩니다.

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

속성에 값이 할당되면 작업에서 set 접근자를 호출합니다.

예:

e1.Name = "Joe"; // The set accessor is invoked here

set 접근자에서 지역 변수 선언에 암시적 매개변수 이름(값)을 사용하는 것은 오류입니다.


참고:

속성은 사용된 접근자에 따라 다음과 같이 분류됩니다.
get 접근자 속성만 해당됩니다. 읽기 전용 속성이라고 합니다. 읽기 전용 속성에는 값을 할당할 수 없습니다.
set 접근자만 있는 속성을 쓰기 전용 속성이라고 합니다. 쓰기 전용 속성은 할당 대상을 제외하고 참조할 수 없습니다.
get 및 set 접근자가 모두 있는 속성은 읽기/쓰기 속성입니다.
속성 선언에서 get 및 set 접근자는 모두 속성 본문 내부에서 선언되어야 합니다.
객체의 상태를 변경하기 위해 get 접근자를 사용하는 것은 좋지 않은 프로그래밍 스타일입니다.


접속자가 무엇인지 이해하기 위해 다음 예를 사용합니다.

 using System; 
 namespace AccessorEG
 {     
     public class Student
     {         
         // 私有字段 private field
         private int _age; 
          
         // 公开的属性 public property
         public int Age
         {             
            get { return _age; }             
            set { _age = value; }
         }
     } 
      
     class Program
     {         
         static void Main(string[] args)
         {
             Student stu = new Student();
             stu.Age = 10;                           // 使用了修改
             Console.WriteLine(stu.Age.ToString()); //使用了读取 输出 10                  
             Console.ReadKey();                    
         }
     }
 }

접속자는 다음의 액세스를 의미한다는 것을 이해하기 쉽습니다. 인터페이스는 객체 유형 구성원과 외부 세계 간의 정보 교환을 가능하게 하는 브리지이며, 외부 세계는 객체 구성원을 읽고 쓰는 해당 작업을 수행할 수 있습니다.

그럼 어떤 회원이 접속자를 가질 수 있나요? 읽기 전용이 아닌 필드 및 이벤트에 대해 접근자를 선언할 수 있습니다. 물론 읽기 전용 도메인은 외부 세계에서 얻을 수 있는 인터페이스, 즉 get도 제공할 수 있지만 선언이나 생성자에서만 초기화할 수 있고 set 메서드를 지원하지 않습니다.

 using System; 
 namespace AccessorEG
 {     
     public class Student
     {         
         // 私有字段 private field
         private readonly int _age = 10; 
          
         // 公开的属性 public property
         public int Age
         {   
               get { return _age; }
         }
     } 
      
     class Program
     {        
         static void Main(string[] args)
         {
             Student stu = new Student();
             Console.WriteLine(stu.Age.ToString());  // 使用了读取   输出 10                
             Console.ReadKey();                              
         }
     }
 }

위 코드에서 읽기전용 필드의 값은 선언시 할당되어 있으며, public 속성에 해당하는 접근자에는 set 메소드를 제공할 수 없습니다. 그렇지 않으면 제공되지 않습니다. 컴파일되었지만 외부 세계에서 얻을 수 있습니다.

필드 접근자에 대해 이야기해야 합니다. 일반적인 접근자는 다음과 같습니다.

using System; 
 namespace AccessorEG
 {     
     public class Student
     {         
         #region 全访问权限         // 私有字段
         private int _age;        // 与_age对应的公开属性,包含了set和get方法
          
         public int Age
         {             
             get { return _age; }             
             set { _age = value; }
         } 
         // 如果您安装了.NET3.0,那么您可以使用自动属性,届时,上面的代码即可以下面的代替
      // 在VS.NET下输入 prop 连击两下Tab键,编译器会自动帮您生成自动属性
      // public int Age { get; set; }
         #endregion // 全访问权限
  
         #region 只读属性         
         private string _name; 
          
         public string Name
         {             
            get { return _name; }
         } 
         // 等同于
      // public string Name { private set; get; }
         #endregion
  
         #region 只写属性         
         private bool _sex; 
          
         public bool Sex
         {          
             set { _sex = value; }
         }         
         // 等同于
      // public bool Sex { set; private get; }
         #endregion
  
     } 
      
     class Program
     {         
         static void Main(string[] args)
         {
             Student stu = new Student();
             stu.Age = 18;             
             // stu.Name = "Johness"; 异常,编译错误,因为该属性只读
         // Console.WriteLine(stu.Sex.ToString()); 异常,编译错误,因为该属性只写
             Console.WriteLine(stu.Age.ToString());  // 使用了读取                    Console.ReadKey();             // 输出 18         
         }
     }
 }

위 예의 읽기 전용 및 쓰기 전용은 외부 세계에만 유효합니다. 접근자의 소유자를 지정하는 경우 클래스의 전용 필드를 표시합니다. 그런 다음 클래스 내에서 읽기 및 쓰기 작업을 위해 정의한 비공개 필드를 편리하게 사용할 수 있습니다. 따라서 친구는 3.0의 새로운 구문(자동 속성) 대신 .NET2.0의 구문을 사용하여 필드와 해당 접근자를 정의하는 것이 좋습니다. ). 물론 접근자를 사용하여 데이터 유효성을 더 잘 확인할 수도 있습니다:

using System; 
 namespace AccessorEG
 {     
     public class Student
     {         
         // 私有字段
         private int _age;  // 与_age对应的公开属性,包含了set和get方法
          
         public int Age
         {             
             get { return _age; } // 利用访问器对输入的年龄进行验证
         // 如果输入值小于0或者大于100
         // 可以赋为默认值18或者不进行操作
             set 
             {                 
                   if (value >= 0 && value <= 100)
                    _age = value;   // 如果数据无效不进行操作可以注释以下内容
                   else
                    _age = 18;
             }
         }
  
     } 
      
     class Program
     {         
         static void Main(string[] args)
         {
             Student stu = new Student();
             stu.Age = -2;   // 赋无效值                     
             Console.WriteLine(stu.Age.ToString()); 
             Console.ReadKey();    // 输出 18         
         }
     }
 }


성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경