C#의 프로퍼티를 사용하여 get/set 메소드를 자동으로 생성하는 방법을 소개합니다.
1. 프로퍼티
프로퍼티는 어떤 멤버 변수에 대해서 get, set 함수를 자동으로 생성하는 문법이라고 보시면 좋습니다.
예를 들어, 아래 예제의 Student
클래스를 봐보세요. Student 클래스는 name
이라는 private 변수를 갖고 있습니다.
그리고 우리는 일반적으로 외부에서 private 변수에 직접 접근하지 않고 getName()
, setName()
과 같은 함수를 통해서 접근을 합니다.
문제는 이런 멤버 변수가 많아지면 get, set 함수도 증가하고 이런 형식적인 메소드를 생성하는 것이 개발자 입장에서 피곤해질 수 있습니다. 프로퍼티는 이런 get/set 함수를 좀 더 만들기 쉽게 해주는 문법적인 요소입니다.
namespace Example {
public class Program {
class Student {
private string name;
public void setName(string n) {
name = n;
}
public string getName() {
return name;
}
}
public static void Main(string[] args) {
Student student = new Student();
student.setName("Alex");
Console.WriteLine(student.getName());
}
}
}
2. 프로퍼티로 get/set 함수 구현
아래 예제는 프로퍼티로 get/set 함수를 만들고 프로퍼티를 통해서 멤버 변수 name
에 접근하는 예제입니다.
Name
이 프로퍼티이며, 아래와 같이 프로퍼티를 통해서 private 변수 name
에 값을 설정하거나 읽을 수 있습니다.
object.PropertyName = value
로 변수name
의 값 설정object.PropertyName
으로 변수name
의 값 읽음
namespace Example {
public class Program {
class Student {
private string name; // field
public string Name { // property
get { return name; }
set { name = value; }
}
}
public static void Main(string[] args) {
Student student = new Student();
student.Name = "Alex";
Console.WriteLine(student.Name);
}
}
}
Output:
Alex
2.1 get/set 함수에 구현 추가
위의 예제는 get/set 함수에서 변수에 값을 설정하거나 값을 리턴하기만 하였습니다.
아래 예제와 같이 get/set 메소드에 코드를 추가하여 값을 변경하는 등의 예외 처리를 할 수도 있습니다.
namespace Example {
public class Program {
class Student {
private string name; // field
public string Name { // property
get {
return "Name is " + name;
}
set {
name = value;
}
}
}
public static void Main(string[] args) {
Student student = new Student();
student.Name = "Alex";
Console.WriteLine(student.Name);
}
}
}
Output:
Name is Alex
2.3 가장 단순한 프로퍼티 구현 방법
만약 get/set 함수를 통해 멤버 변수의 값을 변경하지 않는다면, 프로퍼티만 사용해도 됩니다. 또한, 아래와 같은 문법으로 get, set 함수를 쉽게 설정할 수 있습니다.
대부분의 멤버 변수는 단순히 값을 설정하거나 리턴하는 get/set 함수를 갖고 있기 때문에, 이 방법을 가장 많이 사용할 것 같습니다.
namespace Example {
public class Program {
class Student {
public string Name { get; set; }
}
public static void Main(string[] args) {
Student student = new Student();
student.Name = "Alex";
Console.WriteLine(student.Name);
}
}
}
Output:
Alex
Related Posts
- C# 바이트(Byte) 배열을 문자열로 변환
- C# String.format() 함수 알아보기
- C# - foreach (Array, List, Dictionary)
- C# 프로퍼티(Property) Get/Set 함수
- C# - Dictionary에서 key, value 가져오기
- C# - Dictionary 순회, foreach, for 루프
- C# - Dictionary에서 key, value 삭제
- C# - Dictionary.add()로 데이터 추가
- C# - Dictionary 선언 및 초기화
- C# - 문자열을 Double, Float으로 변환
- C# - 문자열을 리스트로 변환
- C# - 두 날짜/시간 비교, DateTime.Compare()
- C# - 날짜 계산, DateTime 시간 더하기 빼기
- C# - 날짜 문자열을 DateTime으로 변환
- C# - Sleep, 몇 초간 지연시키기
- C# - Timestamp(millisecond)를 DateTime 객체로 변환
- C# - 현재 시간 가져오기, DateTime
- C# - 문자열 리스트를 문자열로 변환
- C# - 리스트 복사 (얕은 복사, 깊은 복사)
- C# - 2차원 리스트 선언 및 초기화
- C# - 리스트 선언 및 초기화
- C# - 리스트 길이, 크기 가져오기
- C# - 리스트 합계, 평균 계산
- C# - 리스트 요소 제거 (RemoveAt, RemoveAt, RemoveAll)
- C# - 리스트에서 빈 문자열, null 제거
- C# - 리스트 두개로 분리, n개로 나누기
- C# - 문자열 뒤집기, Reverse()
- C# - 2차원 배열 복사, Clone
- C# - 문자열 배열을 문자열로 변환
- C# - 2차원 배열 선언, 초기화 방법
- C# - 배열 길이, 2차원 배열 길이
- C# - 두개의 배열을 하나로 합치기
- C# - 배열 중복 요소 제거
- C# - 배열에서 특정 요소 제거
- C# - Int 배열 정렬 (오름차순, 내림차순)