-왜 쓰는가?
프로퍼티는 속성이라는 의미가 있다. 이 프로퍼티를 사용하여 필드의 은닉성, 편의성을 고려하여 만들수있게 해주는 편의한 기능이다. 처음에는 솔직히 왜 쓰는지 이해가 가지 않았다. 그냥 다른 곳에서 쓰게 되면 public으로 클래스 내부에서만 쓰게 되면 private으로 쓰면 되지 않나 싶었다. 그래서 검색으로 해보니 코드가 길어지고 복잡 해질수록 데이터를 누가 어디서 가공하게 되는지 애매 해지고, 중요한 데이터일 경우 데이터가 원하는 방향이 아닌 식으로 변환 될수도 있다고 한다. 이를 방지 하기 위해서 은닉성을 추구하고, 어디서 데이터가 바뀐는 지 보기 쉽게 하기 위해, 프로퍼티를 사용한다고 한다.
또한, 데이터가 set, get이 불러올때 메소드를 정의하여 가공할수 있으니, 편리하다. 쉽게 말해, 변수의 값을 변경하거나 가져올 때, 조건을 걸어서 변수의 접근을 제어할 수 있기 때문이다.
class Test
{
private int test;
public int GetTest() { return test; }
public void SetTest(int test) { this.test = test; }
}
우리가 필드를 정의 했을 때, 이런식으로 get, set을 정의한다. 하지만, c# 에서는 이를 간편화 하여
class Student
{
private string name;
public string Name
{
get
{
return name;
}
set
{
if ('codition')
Console.WriteLine("haha");
else
Console.WriteLine("haha x 2");
}
}
private int age;
public int Age
{
get
{
return age;
}
set
{
age = value;
}
}
}
get과 set에서 private 필드에 접근하고, 외부에서 사용 할때, student.Age; student.Name; 으로 프로퍼티에 접근을하게 된다.
-> 변수에 접근할때, 특정 조건이 필요한 경우에 쓰자
'Programming > C#' 카테고리의 다른 글
Effective C#-제네릭 활용: 필요한 제약 조건만 설정 +) 제네릭? (2) | 2022.09.02 |
---|---|
Effective C# - 캐스트보다 is, as를 사용하자 (0) | 2022.08.29 |
C#- 비동기 프로그래밍(2) with 예제 (0) | 2022.06.12 |
C# - 비동기 프로그래밍_asynchronous programming (0) | 2022.05.28 |
C# - 구조체(struct) (0) | 2022.05.23 |