IRONSOFTWAREHOME
AKTUALNOŚCI DLA PROGRAMISTÓW

C# This (Jak to działa dla programistów)

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Jacob Mellor
Updated: 23 kwietnia 2026

Istnieje szczególne słowo kluczowe w C#, które ma specjalne znaczenie, a jest to this. To słowo kluczowe odnosi się do bieżącej instancji klasy, w której jest używane. Można go wykorzystać między innymi do rozróżnienia zmiennych na poziomie klasy od parametrów metod o tej samej nazwie. Na przykład, jeśli masz zmienną instancji i parametr metody o tej samej nazwie, this może być wybawieniem!

Podstawy tego słowa kluczowego

W publicznej klasie, takiej jak Employee na przykład, możesz mieć publiczne zmienne instancji, takie jak id lub name. Jeśli chcesz przypisać wartości do tych zmiennych instancji wewnątrz metody, możesz natknąć się na powszechny problem: co zrobić, jeśli parametry metody mają tę samą nazwę co zmienne instancji?

Oto rozwiązanie: użyj słowa kluczowego this w dokumentacji C#! W poniższym przykładzie metody wewnątrz publicznej klasy Employee, słowo kluczowe this jest używane do odróżnienia pomiędzy zmiennymi instancji a parametrami metody, które mają te same nazwy.

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;
    }
}

W tym przypadku, this.id odnosi się do zmiennej instancji, a id jest parametrem metody.

Słowo kluczowe this w przeładowywaniu konstruktorów

Wykorzystując słowo kluczowe this, przeładowywanie konstruktorów staje się potężną techniką w obrębie tej samej klasy. Gdy klasa, taka jak klasa Student, ma wiele konstruktorów z różnymi parametrami, słowo kluczowe this pozwala jednemu konstruktorowi wywoływać inny, eliminując potrzebę zbędnego kodu.

Rozważmy poniższy przykład, gdzie this jest używane w konstruktorze parametryzowanym:

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;
    }
}

W konstruktorze bez parametru, this("Default", 0) wywołuje konstruktor parametryzowany, ustawiając Default jako nazwę i 0 jako ID.

Odkrywanie this w metodach rozszerzających

Metody rozszerzeń w języku C# umożliwiają dodawanie metod do istniejących typów bez modyfikowania typu oryginalnego. Oto gdzie słowo kluczowe this robi coś magicznego. Jest używany w liście parametrów metody rozszerzenia w odniesieniu do typu, który jest rozszerzany.

Rozważmy następujący przykład metody rozszerzenia:

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);
    }
}

Tutaj, this string str informuje C#, że to jest metoda rozszerzająca dla typu string. Teraz możesz używać tej metody na każdym obiekcie typu string, jak if(myString.IsNullOrEmpty()).

this w indeksatorach

Słowo kluczowe this może być również używane do definiowania indeksatorów. Indeksator pozwala na indeksowanie instancji klasy tak samo jak tablic. Umożliwia to dostęp do danych w obiektach przy użyciu notacji indeksowej. W indeksatorze, this jest połączone z indeksem tablicy, który zwykle jest int index.

Oto podstawowy przykład indeksatora:

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; }
    }
}

W tej klasie Test, słowo kluczowe this definiuje indeksator, który może być używany do pobierania lub ustawiania wartości w polu instancji array.

this a członkowie statyczni

Jedną rzeczą do odnotowania o this jest to, że nie może być używane do odniesienia się do członków lub metod statycznych. Dzieje się tak, ponieważ this odnosi się do bieżącej instancji, a członkowie statyczni należą do samej klasy, a nie do instancji klasy.

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

Więc pamiętaj, this jest dla instancji, nie dla członków na poziomie klasy lub statycznych!

Słowo kluczowe this i właściwości

Podobnie jak zmienne instancji i parametry metod, słowo kluczowe this może być również używane z właściwościami. W języku C# właściwość to element składowy, który zapewnia elastyczny mechanizm odczytu, zapisu lub obliczania wartości pola prywatnego. Właściwości można używać tak, jakby były publicznymi elementami danych, ale w rzeczywistości są to specjalne metody zwane akcesorami.

Spójrzmy na prosty przykład użycia this w właściwości:

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
    }
}

W powyższej klasie, słowo kluczowe this jest używane do odniesienia do prywatnego stringa name w akcesorach get i set właściwości Name.

Odkrywanie this i delegatów

Kolejne miejsce, gdzie pojawia się this, to delegaty. Delegat w języku C# jest podobny do wskaźnika funkcji w języku C lub C++. Jest to zmienna typu referencyjnego, która przechowuje odwołanie do metody. Metody delegatów, podobnie jak metody rozszerzające, mogą korzystać z this do uzyskania dostępu do bieżącej instancji.

Oto przykład delegatu korzystającego z 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);
    }
}

W klasie student, this.DisplayDetails tworzy nową instancję delegatu, która odnosi się do metody DisplayDetails bieżącego obiektu.

Implementacja słowa kluczowego this z IronPDF

Zagłębmy się w przykład, gdzie można użyć słowa kluczowego this wraz z IronPDF, potężną biblioteką .NET do edycji i tworzenia plików PDF za pomocą HTML.

Rozważmy klasę nazwaną PDFHandler, która korzysta z biblioteki IronPDF do wykonywania różnych operacji na plikach PDF:

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);
    }
}

W tej klasie PDFHandler, słowo kluczowe this jest używane do odwołania się do pola path bieżącej instancji. To pole służy do zapisania wygenerowanego pliku PDF w określonej ścieżce.

Kiedy tworzymy nową instancję PDFHandler i wywołujemy metodę GeneratePDF, słowo kluczowe this pozwala nam wykorzystać path określoną podczas tworzenia obiektu:

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!");
    }
}

Tutaj, this sprawia, że kod jest bardziej czytelny i zrozumiały, zwłaszcza podczas pracy z bibliotekami jak IronPDF.

C# This (How It Works For Developers) Figure 1

Wnioski

Do tej pory powinieneś dobrze rozumieć słowo kluczowe this w C#, włączając w to jego szerokie zastosowanie, od prostych zmiennych instancji do skomplikowanych kontekstów, takich jak konstruktory, metody rozszerzające, właściwości, delegaty, anonimowe metody, a nawet podczas korzystania z popularnych bibliotek, takich jak IronPDF.

Pamiętaj, że firma IronPDF oferuje bezpłatną wersję próbną IronPDF, dzięki czemu możesz przetestować wszystko, czego się dzisiaj nauczyłeś. Jeśli zdecydujesz się kontynuować, licencje zaczynają się od zaledwie $999. IronPDF może być wartościowym dodatkiem do zestawu narzędzi programistycznych C#, upraszczającym obsługę plików PDF w aplikacjach.

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Dyrektor ds. technologii

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczącą ponad 50 osób, obsługującą NASA, Teslę i światowe agencje rządowe.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta