클래스를 인스턴스화 하여 내부의 필드(클래스 또는 구조체에서 직접 선언되는 모든 형식의 변수)와 속성을 할당, 조회할 수 있습니다.
필드와 속성은 접근한정자를 public으로 했을 때는 클래스를 인스턴스화 하여 개별 값을 할당, 조회할 수 있습니다.
필드로 선언됐을 경우에는 값 할당, 조회에서 끝나지만 속성이 됐을 때는 값을 함수로 처리하여 유연하게 사용할 수 있게됩니다.
즉, 값 할당, 조회시 메소드처럼 내부에서 사용이 가능하게 되는데 C#에서는 필드에 get, set을 이용해서 속성으로 처리할 수 있습니다.
Get / Set
아래의 예제를 보면 seq_no, name, job은 속성이며, _hobby, _job은 필드입니다.
필드를 보면 _job은 접근한정자가 private으로 되어있고 _hobby는 public으로 되어있습니다.
_job은 접근한정자가 private이기 때문에 클래스를 인스턴스화 한 상태에서 값제어를 할 수 없고 job속성 값을 할당하기 위한 필드입니다
그리고 _hobby는 접근한정자가 public이기 때문에 값을 제어할 수 있습니다.
속성으로는 seq_no, name, job이 속성인데 seq_no, name은 단순 속성으로 사용하기 위해 get, set만 붙이고 아무런 값처리를 하지않고 있습니다. 하지만 job속성은 값 할당, 조회시 값 처리를 내부에서 하도록 속성을 구현 했습니다.
job속성에 값을 할당할 경우에는 set하위의 {}에 구현된 로직대로 구현이 되며, 값을 가져올 때는 get하위의 {}에 구현된 로직대로 처리하여 값을 return해 줍니다.
예제
아래의 코드에 의하면 job속성을 PROGAMMER로 값을 부여했지만, job속성의 set조건에 의해 실제로 할당된 job속성은 ENGINEER가 됩니다.
고로 job속성에 PROGAMMER로 값을 부여했지만 변수로 job속성을 다시 조회해 올 때는 ENGINEER로 속성값을 조회해옵니다.
Get Set은 쌍으로 써야할 필요는 없으며, 상황에 따라 변수에 Get Set 단독으로만 사용해도 무방합니다
public class Custom
{
private string _job = "";
public int seq_no { get; set; }
public string name { get; set; }
public string _hobby = "";
public string job {
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;
}
}
'C#' 카테고리의 다른 글
C# - 확장메소드 사용법 및 예시 (0) | 2021.07.15 |
---|---|
C# - List 기본함수 사용법(Add, AddRange, Contains, Clear, IndexOf, Remove, RemoveAll, Reverse, ToArray, Sort) (0) | 2021.07.14 |
C# - Xml파일 제어, Xml파싱 (0) | 2021.07.08 |
C# - 연산자 오버로드 (0) | 2021.07.08 |
C# - 문자와 문자열의 차이(string과 char) (0) | 2021.07.06 |
댓글