C#의 this 키워드란?
C#에서 this 키워드는 클래스의 현재 인스턴스(객체)를 참조할 때 사용됩니다. 특히 메서드의 매개변수와 클래스 필드의 이름이 서로 같을 때, 이 둘을 구분하는 역할을 합니다.
또한 this 키워드는 같은 클래스 내에서 한 생성자가 다른 생성자를 호출할 때도 활용됩니다.
this 키워드의 주요 용도
- 현재 객체 참조: 현재 실행 중인 인스턴스의 필드나 메서드에 접근할 수 있습니다.
- 이름 충돌 해결: 매개변수와 필드의 이름이 동일할 경우,
this.필드명으로 클래스 멤버임을 명확히 구분합니다. - 생성자 체이닝:
this(...)형태로 같은 클래스 내의 다른 생성자를 호출할 수 있습니다.
기본 사용 예시
다음은 학생(Student) 정보인 id, 이름(name), 나이(age), 과목(subject)을 저장하는 생성자입니다. 현재 클래스의 필드를 참조하기 위해 this 키워드를 사용했습니다.
public Student(int id, String name, int age, String subject) {
this.id = id;
this.name = name;
this.subject = subject;
this.age = age;
}생성자의 매개변수 이름과 클래스 필드 이름이 동일하므로, this.id, this.name처럼 작성해야 필드에 값이 올바르게 할당됩니다. 만약 this를 생략하면 컴파일러는 이를 매개변수 자신에게 대입하는 것으로 해석하여 의도하지 않은 결과가 발생할 수 있습니다.
전체 예제 코드
아래 전체 예제를 통해 C#에서 this 키워드를 실제로 어떻게 활용하는지 확인해 보겠습니다.
using System.IO;
using System;
class Student {
public int id, age;
public String name, subject;
public Student(int id, String name, int age, String subject) {
this.id = id;
this.name = name;
this.subject = subject;
this.age = age;
}
public void showInfo() {
Console.WriteLine(id + " " + name + " " + age + " " + subject);
}
}
class StudentDetails {
public static void Main(string[] args) {
Student std1 = new Student(001, "Jack", 23, "Maths");
Student std2 = new Student(002, "Harry", 27, "Science");
Student std3 = new Student(003, "Steve", 23, "Programming");
Student std4 = new Student(004, "David", 27, "English");
std1.showInfo();
std2.showInfo();
std3.showInfo();
std4.showInfo();
}
}실행 결과
1 Jack 23 Maths 2 Harry 27 Science 3 Steve 23 Programming 4 David 27 English
정리
this 키워드는 C# 객체 지향 프로그래밍에서 현재 인스턴스를 명확하게 가리키는 핵심 요소입니다. 매개변수와 필드의 이름이 겹치는 상황에서 코드의 가독성과 안정성을 높여 주며, 생성자 간 호출을 통해 중복 코드를 줄이는 데에도 유용하게 활용됩니다.