728x90
반응형
Get, Set
- C++의 경우, Data의 은닉성을 위해 Member 변수를 Private나 Protected로 선언한 후, 그 변수를 이용할 때 Set(), Get()과 같은 함수를 만들어 이용해야 했음
- C#의 경우, Get, Set Property를 통해 이를 간단하게 처리할 수 있음
- Class를 Instance화 하여 내부의 Field와 Property를 할당, 조회할 수 있음
- Field에 get, set을 이용해 Property로 처리할 수 있음
- 이 때 Property의 값을 할당 및 반환할 때 사용
- Field : Class / Structure에서 직접 선언되는 모든 형식의 변수. 값 할당, 조회만 가능
- Property : 값을 함수로 처리할 수 있음. 변수의 값을 변경하거나 가져올 때 조건을 걸어 변수의 접근을 제한할 수 있음
- Get, Set은 반드시 같이 쓸 필요는 없음
- 해당 변수의 값이 개발자가 원하는 범위나 조건에 들 때만 값이 할당되거나 반환되게 함
- 이를 통해 해당 변수가 항상 올바르도록 강제성을 띄울 수 있음
- 예제
public class Custom
{
private string _job = ""; // Field
public string _hobby = ""; // Field
public int seq_no { get; set; } // Property
public string name { get; set; } // Property
public string job { // Property
get { // 값 반환 시 사용
if (string.IsNullOrEmpty(_job))
{
_job = "JOBLESS";
}
return _job;
}
set { // 값 할당 시 사용
if (value == "PROGAMMER")
{
_job = "ENGINEER";
}
else
{
_job = "ETC JOB";
}
}
}
}
class Program
{
static void Main(string[] args)
{
Custom cs = new Custom();
// job 속성의 set으로 처리됨
cs.job = "PROGAMMER";
// job 속성의 get으로 처리됨
string job_value = cs.job;
}
}
- Custom Method의 Field _job은 private로 외부에서 직접 접근 불가
- job Property를 통해 _job의 값 설정
- Main 문에서 job의 값을 "PROGRAMMER" 로 할당하나, job property의 set 조건에 의해 실제로는 "ENGINEER"를 _job 할당
- job의 값을 불러올 때는 위에서 할당한 "ENGINNER"를 반환
- C++의 경우 아래처럼 변수 별로 입/출력 함수를 따로 만들어줬어야 함
#include <iostream>
using namespace std;
class MyClass
{
private:
int num;
public:
//변수 별로, 입출력 함수를 따로만들었음
void SetNum(int n) { num = n; }
int GetNum() { return num; }
};
void Main()
{
MyClass a;
a.SetNum(10);
cout << a.GetNum() << endl;
}
- C#의 경우 아래처럼 Get, Set Property를 사용해 간편화가 가능하다
class MyClass
{
private int num;
public int Number
{
set { num = value; }
//여기서 value는 C#에서 미리 예약된 변수로
//멤버 변수에 대입하는 값을 의미한다
get { return num; }
}
//c++과는 다르게 굳이, 함수를 따로따로 작성해 주지 않고 이런식으로 만듬
}
참고 자료 :
https://error999.tistory.com/11
C# - Get Set의 사용법, 의미
클래스를 인스턴스화 하여 내부의 필드(클래스 또는 구조체에서 직접 선언되는 모든 형식의 변수)와 속성을 할당, 조회할 수 있습니다. 필드와 속성은 접근한정자를 public으로 했을 때는 클래스
error999.tistory.com
https://barnabas-kim8618.tistory.com/177
C# WinForms get,set 사용법 04/05
캡슐화에 대한 먼저 기본적인 이해가 필요하다! 캡슐화는 정보 은닉을 위해 클래스에서 선언된 변수가 외부에서 접근이 안되도록 public이 아닌 private로 선언하여 외부에서 접근을 불가능하게 합
barnabas-kim8618.tistory.com
https://blog.naver.com/kimsung4752/221013543888
[C#] Get,Set 기본 개념 및 활용 예제
C#의 프로퍼티 "C# 이가지는 편리한 도구""멤버변수의 은닉성을 지켜주며, 접근성과 이...
blog.naver.com
728x90
반응형
'Study_C#' 카테고리의 다른 글
[C#] Various Keywords, Methods (0) | 2024.07.30 |
---|---|
[C#] Invoke, InvokeRequired, Delegate (0) | 2024.07.30 |
[C#] Using의 2가지 사용법 (0) | 2024.07.30 |
[C#] 비동기 관련 (0) | 2024.07.06 |
[C#] 자료형 정리 (0) | 2024.07.06 |