IRONSOFTWAREHOME
개발자 업데이트

C# This (개발자를 위한 작동 방식)

제이콥 멜러, 팀 아이언 최고기술책임자
Jacob Mellor
Updated: 2026년 4월 23일

C#에서 특히 중요한 키워드가 하나 있습니다. 그것은 바로 this 키워드입니다. 이 키워드는 사용된 현재 클래스 인스턴스를 참조합니다. 동일한 이름을 공유하는 클래스 수준 변수와 메서드 매개변수를 구별하는 데 사용할 수 있습니다. 예를 들어, 인스턴스 변수와 메서드 매개변수가 같은 이름일 경우, this는 생명의 은인이 될 수 있습니다!

this 키워드의 기본 사항

예를 들어 **Employee**와 같은 공개 클래스에서는 id 또는 name와 같은 공개 인스턴스 변수가 있을 수 있습니다. 메서드 내에서 이러한 인스턴스 변수에 값을 할당하려고 할 때, 메서드 인자가 인스턴스 변수와 동일한 이름을 가질 경우 흔히 발생하는 문제에 부딪힐 수 있습니다.

다음은 해결책입니다: C# 문서의 this 키워드 사용! 공개 클래스 Employee 안의 메서드 예에서, 인스턴스 변수와 동일한 이름의 메서드 매개변수를 구분하기 위해 this 키워드가 사용됩니다.

public class Employee
{
    private int id;
    private string name;
    
    public void Display(int id, string name)
    {
        // Use `this.id` to refer to the instance variable, 
        // and `id` for the method parameter.
        this.id = id;
        this.name = name;
    }
}

이 경우, this.id는 인스턴스 변수를 참조하며, id는 메서드 매개변수입니다.

생성자 오버로딩에서 this 키워드

this 키워드를 활용함으로써 생성자 오버로딩은 같은 클래스 내에서 강력한 기법이 됩니다. Student와 같은 클래스가 다양한 매개변수를 가진 여러 생성자를 가질 때, this 키워드는 하나의 생성자가 다른 생성자를 호출할 수 있도록 하여 반복되는 코드를 제거합니다.

매개변수가 있는 생성자에서 this가 사용된 예를 고려하십시오:

public class Student
{
    private string name;
    private int id;

    public Student() : this("Default", 0)
    {
        // Default constructor delegates to the parameterized constructor
        // with "Default" as the name and 0 as the id.
    }

    public Student(string name, int id)
    {
        // Assign the parameters to the instance variables
        this.name = name;
        this.id = id;
    }
}

매개변수가 없는 생성자에서는, this("Default", 0)가 매개변수가 있는 생성자를 호출하여 Default를 이름으로 설정하고, 0를 ID로 설정합니다.

확장 메서드에서 this 탐색

C#의 확장 메서드는 기존 타입을 수정하지 않고 메서드를 추가하는 방법을 제공합니다. 이 부분에서 this 키워드는 뭔가 마법같은 일을 합니다. 확장 메서드의 매개변수 목록에서 확장되는 타입을 참조하기 위해 사용됩니다.

다음은 확장 메서드의 예제입니다.

public static class StringExtensions
{
    // This extension method can be called on any string instance
    public static bool IsNullOrEmpty(this string str)
    {
        return string.IsNullOrEmpty(str);
    }
}

여기서, this string str는 C#에 이것이 문자열 타입의 확장 메서드임을 알려줍니다. 이제 if(myString.IsNullOrEmpty())와 같은 모든 문자열 객체에서 이 메서드를 사용할 수 있습니다.

인덱서에서의 this

인덱서를 정의할 때도 this 키워드를 사용할 수 있습니다. 인덱서는 배열처럼 클래스 인스턴스를 인덱스화할 수 있게 합니다. 이를 통해 인덱스와 같은 표기법으로 객체 내 데이터를 접근할 수 있습니다. 인덱서에서 this 뒤에는 배열 인덱스가 따르며, 이는 일반적으로 int index입니다.

다음은 인덱서의 기본적인 예제입니다.

public class Test
{
    private int[] array = new int[100];

    // Define an indexer for the class
    public int this[int index]
    {
        get { return array[index]; }
        set { array[index] = value; }
    }
}

이 클래스 Test에서, this 키워드는 array 인스턴스 필드에서 값을 가져오거나 설정할 수 있는 인덱서를 정의합니다.

this와 정적 멤버

this에 대해 알아야 할 한 가지는 정적 멤버나 메서드를 참조하는 데 사용할 수 없다는 것입니다. 이는 this가 현재 인스턴스를 참조하고, 정적 멤버는 클래스 자체에 속하며 클래스의 인스턴스에는 속하지 않기 때문입니다.

public class Program
{
    public static void Main(string[] args)
    {
        // Can't use `this` here, because 'Main' is a static method.
    }
}

따라서, this는 인스턴스를 위한 것이지 클래스 수준이나 정적 멤버를 위한 것이 아님을 기억하십시오!

this 키워드와 속성

인스턴스 변수와 메서드 매개변수처럼, this 키워드는 속성과 함께 사용할 수도 있습니다. C#에서 속성은 개인 필드의 값을 읽거나 쓰거나 계산하는 유연한 메커니즘을 제공하는 멤버입니다. 속성은 공개 데이터 멤버처럼 사용할 수 있지만, 실제로는 접근자라는 특별한 메서드입니다.

속성에서 this를 사용하는 간단한 예를 살펴보겠습니다:

public class Employee
{
    private string name;

    public string Name
    {
        get { return this.name; }
        set { this.name = value; } // Use `this` to refer to the instance variable
    }
}

위 클래스에서, this 키워드는 Name 속성의 get 및 set 액세서에서 개인 문자열 name를 참조하는 데 사용됩니다.

this 및 델리게이트 탐색

this가 나타나는 또 다른 곳은 델리게이트입니다. C#에서 대리자는 C나 C++의 함수 포인터와 유사합니다. 이는 메서드에 대한 참조를 보유하는 참조형 변수입니다. 확장 메서드와 마찬가지로 델리게이트 메서드는 this를 사용하여 현재 인스턴스에 접근할 수 있습니다.

this를 사용하는 델리게이트의 예시입니다:

public delegate void DisplayDelegate();

public class Student
{
    public int Id { get; set; }
    public string Name { get; set; }

    public void Display()
    {
        // `this.DisplayDetails` refers to the method instance of the current object.
        DisplayDelegate displayDelegate = new DisplayDelegate(this.DisplayDetails);
        displayDelegate();
    }

    private void DisplayDetails()
    {
        Console.WriteLine("ID: " + Id + ", Name: " + Name);
    }
}

학생 클래스에서 this.DisplayDetailsDisplayDetails 메서드를 참조하는 델리게이트의 새 인스턴스를 만듭니다.

IronPDF와 함께 하는 this 키워드 구현

IronPDF, HTML을 사용하여 PDF 파일을 편집 및 생성하기 위한 강력한 .NET 라이브러리인 IronPDF와 함께 사용할 수 있는 this 키워드의 예를 살펴보겠습니다.

IronPDF 라이브러리를 사용하여 PDF 파일에 다양한 작업을 수행하는 PDFHandler라는 클래스 이름을 고려하십시오:

using IronPdf;

public class PDFHandler
{
    private string path;

    public PDFHandler(string path)
    {
        this.path = path;
    }

    public void GeneratePDF(string content)
    {
        // Creating a renderer to convert HTML content to PDF
        var Renderer = new IronPdf.ChromePdfRenderer();
        var PDF = Renderer.RenderHtmlAsPdf(content);
        
        // Save the generated PDF to the path specified by the current instance
        PDF.SaveAs(this.path);
    }
}

PDFHandler 클래스에서는 this 키워드가 현재 인스턴스의 path 필드를 참조하는 데 사용됩니다. 이 필드는 생성된 PDF를 지정된 경로에 저장하는 데 사용됩니다.

PDFHandler 인스턴스를 생성하고 GeneratePDF 메서드를 호출하면 this 키워드를 사용하여 개체 생성 시 지정된 path을 활용할 수 있습니다:

class Program
{
    static void Main(string[] args)
    {
        // Initialize PDFHandler with a specified file path
        PDFHandler pdfHandler = new PDFHandler("C:\\ThisKeyword.pdf");
        pdfHandler.GeneratePDF("Hello World!");
    }
}

여기서 this는 IronPDF와 같은 라이브러리를 다룰 때 코드를 더 읽기 쉽고 이해하기 쉽게 만듭니다.

C# 이것은 (개발자가 사용하는 방법) 그림 1

결론

지금까지 C#의 this 키워드를 잘 이해하셨을 겁니다. 이는 단순한 인스턴스 변수에서부터 복잡한 생성자, 확장 메서드, 속성, 델리게이트, 익명 메서드, 그리고 IronPDF와 같은 인기 있는 라이브러리 사용까지 다양한 용도로 사용됩니다.

IronPDF는 IronPDF 무료 체험판을 제공하므로 오늘 배운 모든 것들을 시험해볼 수 있습니다. 계속 진행하시려면, 라이선스는 $999부터 시작됩니다. IronPDF는 C# 개발 도구 모음에 있어 값진 추가 기능이 될 수 있으며, 앱에서 PDF 파일을 처리하는 작업을 단순화할 수 있습니다.

제이콥 멜러, 팀 아이언 최고기술책임자
최고기술책임자

제이콥 멜러는 Iron Software의 최고 기술 책임자(CTO)이자 C# PDF 기술을 개척한 선구적인 엔지니어입니다. Iron Software의 핵심 코드베이스를 최초로 개발한 그는 창립 초기부터 회사의 제품 아키텍처를 설계해 왔으며, CEO인 캐머런 리밍턴과 함께 회사를 NASA, 테슬라, 그리고 전 세계 정부 기관에 서비스를 제공하는 50명 이상의 직원을 보유한 기업으로 성장시켰습니다.

...
더 읽어보기

관련 기사

Key in blue circle

무료 30일 체험 키를 즉시 받으세요.

Your trial license will be sent to your email address

제한 없음. 100% 무제한 이용. 신용카드 불필요.

bullet_checked신용카드나 계정 생성은 필요하지 않습니다.제한 없음. 100% 무제한 이용. 신용카드 불필요.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
무료 라이브 데모를 예약하세요
Booking Badge

전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.

Iron Software의 고객 로고
부담 없는 무료 상담을 받아보세요
아래 양식을 작성하시거나 sales@ironsoftware.com으로 이메일을 보내주세요.
고객님의 정보는 항상 비밀로 유지됩니다.
전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.
Iron Software의 고객 로고
지금 바로 30일 무료 체험판 키를 받으세요.
신용카드나 계정 생성은 필요하지 않습니다.