C# Record (jak to działa dla programistów)
Rekord C# to potężna funkcja wprowadzona w celu ułatwienia tworzenia niezmiennych modeli danych oraz poprawy komfortu kodowania poprzez ograniczenie kodu szablonowego. Ten samouczek ma na celu uproszczenie pojęcia rekordów w języku C# dla początkujących, przedstawiając ich składnię, zastosowanie i zalety.
Niezależnie od tego, czy masz do czynienia z obiektami transferu danych, konfiguracjami, czy po prostu potrzebujesz wydajnego sposobu na przedstawienie danych, rekordy C# oferują zwięzłe i przyjazne dla programistów podejście. W dalszej części artykułu omówimy również IronPDF.
Czym jest rekord w języku C#?
Rekord w języku C# to typ referencyjny, który zapewnia uproszczoną składnię do definiowania niezmiennych modeli danych. W przeciwieństwie do tradycyjnych definicji klas, rekord kładzie nacisk na równość opartą na wartościach, a nie na równość referencyjną. Oznacza to, że dwie instancje rekordów są traktowane jako równe, jeśli ich wartości właściwości są takie same, a nie tylko dlatego, że odnoszą się do tej samej lokalizacji obiektu w pamięci.
Typy rekordów: Class i Struct
W języku C# istnieją dwa główne typy rekordów:
- Klasa rekordów: domyślny typ rekordów, który jest typem referencyjnym.
- Struktura rekordów: Wprowadzona dla scenariuszy wymagających typów wartościowych, domyślnie są one niezmienne i oferują porównanie oparte na wartościach, podobnie jak klasy rekordów.
Deklaracja rekordu
Deklaracja rekordu jest prosta. Rekord można zdefiniować za pomocą słowa kluczowego record, po którym następuje typ (klasa lub struktura) oraz nazwa rekordu. Na przykład prosty rekord osoby można zadeklarować jako:
public record class Person(string FirstName, string LastName);
public record class Person(string FirstName, string LastName);
'INSTANT VB TODO TASK: C# 'records' are not converted by Instant VB:
'public record class Person(string FirstName, string LastName)
Ta deklaracja zawiera parametry pozycyjne dla FirstName i LastName, które w tle generują właściwości publiczne oraz główny konstruktor dla tych właściwości.
Niezmienny charakter rekordów
Rekordy są zaprojektowane jako niezmienne, co oznacza, że po utworzeniu instancji rekordu wartości jego właściwości nie mogą zostać zmienione. Ta niezmienność ma kluczowe znaczenie dla tworzenia przewidywalnych i bezpiecznych dla wątków aplikacji, zwłaszcza w przypadku operacji wykonywanych równolegle.
Niezmienna struktura rekordów
Niezmienna struktura rekordowa jest deklarowana podobnie jak klasa rekordowa, ale przy użyciu składni struktury rekordowej. Łączy to niezmienność i porównywanie rekordów na podstawie wartości z korzyściami wydajnościowymi typu wartościowego:
public readonly record struct ImmutablePerson(string FirstName, string LastName);
public readonly record struct ImmutablePerson(string FirstName, string LastName);
'INSTANT VB TODO TASK: C# 'records' are not converted by Instant VB:
'public readonly record struct ImmutablePerson(string FirstName, string LastName)
Praca z rekordami
Rekordy upraszczają tworzenie i używanie typów zorientowanych na dane. Obsługują dziedziczenie, umożliwiają nieniszczącą mutację i zapewniają wbudowane formatowanie ułatwiające debugowanie. Przyjrzyjmy się tym funkcjom na przykładach.
Tworzenie i porównywanie rekordów
Rozważmy następujący przykład, w którym tworzymy dwie instancje rekordu osoby:
var person1 = new Person("Iron", "Software");
var person2 = new Person("Iron", "Software");
Console.WriteLine(person1 == person2); // Output: True
var person1 = new Person("Iron", "Software");
var person2 = new Person("Iron", "Software");
Console.WriteLine(person1 == person2); // Output: True
Dim person1 = New Person("Iron", "Software")
Dim person2 = New Person("Iron", "Software")
Console.WriteLine(person1 = person2) ' Output: True
Pomimo że person1 i person2 są dwoma odrębnymi instancjami, są one traktowane jako równe na podstawie wartości ich właściwości, co stanowi przykład równości opartej na wartościach. Jest to znaczące odejście od domyślnego zachowania typów referencyjnych, które koncentruje się na równości referencji.
Właściwości niezmienne
Zgodnie z projektem właściwości rekordów są niezmienne. Oznacza to, że nie można zmieniać wartości właściwości instancji rekordu po jej utworzeniu.
// This will result in a compilation error
// person1.FirstName = "Jane";
// This will result in a compilation error
// person1.FirstName = "Jane";
' This will result in a compilation error
' person1.FirstName = "Jane";
Dziedziczenie z rekordami
Rekordy obsługują dziedziczenie, co pozwala tworzyć hierarchię modeli danych. Oto jak można rozszerzyć rekord bazowy:
public record Employee(string FirstName, string LastName, string Department) : Person(FirstName, LastName);
public record Employee(string FirstName, string LastName, string Department) : Person(FirstName, LastName);
'INSTANT VB TODO TASK: C# 'records' are not converted by Instant VB:
'public record Employee(string FirstName, string LastName, string Department) : Person(FirstName, LastName)
Ten rekord pracownika rozszerza klasę Person, dodając dodatkową właściwość Department.
Zaawansowane funkcje rekordów
Mutacja nieniszcząca
Rekordy zapewniają wbudowaną metodę tworzenia nowej instancji rekordu na podstawie istniejącej, z pewnymi zmodyfikowanymi właściwościami, znaną jako mutacja nieniszcząca.
var updatedPerson = person1 with { FirstName = "Jane" };
var updatedPerson = person1 with { FirstName = "Jane" };
'INSTANT VB TODO TASK: C# 'with expressions' are not converted by Instant VB:
'var updatedPerson = person1 with { FirstName = "Jane" }
Wbudowane formatowanie
Rekordy posiadają wbudowane formatowanie ułatwiające debugowanie i rejestrowanie, automatycznie zapewniając reprezentację ich właściwości w postaci ciągu znaków.
Console.WriteLine(person1);
Console.WriteLine(person1);
Console.WriteLine(person1)
Zalety korzystania z rekordów C
- Uproszczona składnia: rekordy ograniczają potrzebę stosowania kodu szablonowego, dzięki czemu modele są bardziej zwięzłe i czytelne.
- Niezmienne modele danych: Niezmienny charakter rekordów pomaga w tworzeniu aplikacji bezpiecznych dla wątków.
- Równość oparta na wartości: Rekordy wykorzystują równość opartą na wartości zamiast równości referencyjnej, co idealnie sprawdza się w typach zorientowanych na dane.
- Obsługa dziedziczenia: rekordy mogą dziedziczyć po innych rekordach, co pozwala na ponowne wykorzystanie kodu i tworzenie hierarchicznych modeli danych.
Wprowadzenie do IronPDF: biblioteka PDF dla języka C

IronPDF Overview to biblioteka PDF dla programistów .NET, zaprojektowana do generowania, edycji i manipulowania dokumentami PDF w aplikacjach C#. IronPDF obsługuje renderowanie plików PDF z treści HTML, CSS, obrazów i JavaScript.
Jego podstawową funkcją jest tworzenie dokumentów PDF na podstawie treści internetowych, oferując usprawnione podejście do konwersji ciągów HTML, adresów URL i formularzy internetowych ASPX na pliki PDF. IronPDF działa wydajnie w różnych typach aplikacji, w tym w aplikacjach formularzowych, serwerowych i internetowych.
Jak zainstalować bibliotekę IronPDF
Instalacja IronPDF jest prosta i można ją przeprowadzić za pomocą menedżera pakietów NuGet w Visual Studio. Postępuj zgodnie z poniższymi wskazówkami:
- W programie Visual Studio przejdź do Eksploratora rozwiązań, kliknij prawym przyciskiem myszy opcję Odwołania i wybierz Zarządzaj pakietami NuGet.
- W menedżerze pakietów NuGet wybierz opcję Przeglądaj i wyszukaj "IronPdf".
- Znajdź pakiet IronPDF i kliknij Instaluj.

Alternatywnie można zainstalować go za pomocą konsoli menedżera pakietów, używając polecenia:
Install-Package IronPdf
Przykład: Korzystanie z C# Record z IronPDF
Rozważmy praktyczny przykład, w którym używamy rekordu C# do przechowywania danych, które następnie wykorzystujemy do wygenerowania dokumentu PDF za pomocą IronPDF:
public record Person(string FirstName, string LastName);
class Program
{
static void Main(string[] args)
{
// Create an instance of the Person record.
var person = new Person("Iron", "Developer");
// Initialize a new renderer object for generating PDF files using Chrome's rendering engine.
var renderer = new IronPdf.Rendering.ChromePdfRenderer();
// Render an HTML string as a PDF document.
var pdf = renderer.RenderHtmlAsPdf($"<h1>Person Record</h1><p>Name: {person.FirstName} {person.LastName}</p>");
// Save the PDF to the specified location.
pdf.SaveAs("PersonRecord.pdf");
}
}
public record Person(string FirstName, string LastName);
class Program
{
static void Main(string[] args)
{
// Create an instance of the Person record.
var person = new Person("Iron", "Developer");
// Initialize a new renderer object for generating PDF files using Chrome's rendering engine.
var renderer = new IronPdf.Rendering.ChromePdfRenderer();
// Render an HTML string as a PDF document.
var pdf = renderer.RenderHtmlAsPdf($"<h1>Person Record</h1><p>Name: {person.FirstName} {person.LastName}</p>");
// Save the PDF to the specified location.
pdf.SaveAs("PersonRecord.pdf");
}
}
'INSTANT VB TODO TASK: C# 'records' are not converted by Instant VB:
'public record Person(string FirstName, string LastName)
Friend Class Program
Shared Sub Main(ByVal args() As String)
' Create an instance of the Person record.
Dim person As New Person("Iron", "Developer")
' Initialize a new renderer object for generating PDF files using Chrome's rendering engine.
Dim renderer = New IronPdf.Rendering.ChromePdfRenderer()
' Render an HTML string as a PDF document.
Dim pdf = renderer.RenderHtmlAsPdf($"<h1>Person Record</h1><p>Name: {person.FirstName} {person.LastName}</p>")
' Save the PDF to the specified location.
pdf.SaveAs("PersonRecord.pdf")
End Sub
End Class
W tym przykładzie tworzony jest prosty rekord osoby, a następnie za pomocą IronPDF generowany jest dokument PDF wyświetlający imię i nazwisko tej osoby. Pokazuje, jak płynnie rekordy C# mogą integrować się z generowaniem plików PDF w aplikacjach .NET.

Licencjonowanie IronPDF

IronPDF to produkt komercyjny oferujący różne licencje dostosowane do różnych potrzeb, w tym opcje indywidualne i komercyjne. Każdy zakup obejmuje dożywotnią licencję oraz 30-dniową gwarancję zwrotu pieniędzy. Przed zakupem licencji zapoznaj się z opcjami licencyjnymi IronPDF.
Wnioski
Rekordy C# stanowią znaczący krok naprzód w upraszczaniu modelowania danych w aplikacjach .NET. Dzięki zrozumieniu i wykorzystaniu rekordów programiści mogą tworzyć bardziej niezawodne, łatwiejsze w utrzymaniu i czytelne bazy kodu.
Niezależnie od tego, czy pracujesz nad aplikacjami na dużą skalę, czy prostymi strukturami danych, funkcje oferowane przez rekordy, od niezmienności po równość opartą na wartościach, sprawiają, że są one nieodzownym narzędziem w Twoim zestawie narzędzi C#.
IronPDF oferuje możliwość przetestowania swoich funkcji za pomocą bezpłatnej wersji próbnej IronPDF przed podjęciem decyzji o zakupie. Jeśli uznasz, że oprogramowanie spełnia Twoje potrzeby, możesz kupić licencję już od $799.
Często Zadawane Pytania
Jak mogę użyć rekordów w języku C# do wygenerowania pliku PDF?
Rekordy C# mogą służyć do efektywnego przechowywania danych, które następnie mogą być wykorzystywane przez IronPDF do generowania dokumentów PDF. Można utworzyć rekord zawierający niezbędne dane i użyć IronPDF do przekształcenia tych danych do formatu PDF.
Jakie są zalety korzystania z rekordów w języku C#?
Rekordy w języku C# oferują szereg korzyści, w tym uproszczoną składnię, niezmienne modele danych, równość opartą na wartościach oraz obsługę dziedziczenia. Cechy te sprawiają, że rekordy nadają się do tworzenia zwięzłych i niezawodnych typów zorientowanych na dane.
W jaki sposób rekordy obsługują równość w języku C#?
Rekordy w języku C# kładą nacisk na równość opartą na wartościach. Oznacza to, że dwie instancje rekordów są uważane za równe, jeśli wartości ich właściwości są zgodne, niezależnie od ich lokalizacji w pamięci.
Jak zadeklarować rekord w języku C#?
Rekord w języku C# deklaruje się za pomocą słowa kluczowego record, po którym następuje typ (klasa lub struktura) oraz nazwa rekordu. Na przykład: public record class Person(string FirstName, string LastName);.
Jaka jest różnica między klasami rekordów a strukturami rekordów?
Klasy rekordów są typami referencyjnymi, natomiast struktury rekordów są typami wartościowymi. Obie zapewniają niezmienność i porównywanie oparte na wartościach, ale różnią się pod względem alokacji pamięci i przypadków użycia.
Czy można modyfikować właściwości rekordu C# po jego utworzeniu?
Rekordy w języku C# są zaprojektowane jako niezmienne, co oznacza, że właściwości nie mogą być zmieniane po utworzeniu rekordu. Można jednak wykonać mutację nieniszczącą, aby utworzyć nową instancję rekordu ze zmodyfikowanymi właściwościami.
W jaki sposób IronPDF usprawnia działanie aplikacji C#?
IronPDF wzbogaca aplikacje C#, zapewniając solidne możliwości generowania, edycji i manipulowania dokumentami PDF. Pozwala programistom tworzyć pliki PDF z treści HTML, co czyni go wszechstronnym narzędziem do zarządzania dokumentami.
Jak zainstalować IronPDF w projekcie .NET?
Możesz zainstalować IronPDF w projekcie .NET za pomocą menedżera pakietów NuGet w Visual Studio lub uruchamiając polecenie Install-Package IronPdf w konsoli menedżera pakietów.
Jak działa mutacja nieniszcząca w rekordach C#?
Nieniszcząca mutacja w rekordach C# pozwala na utworzenie nowej instancji rekordu na podstawie istniejącej, z pewnymi zmodyfikowanymi właściwościami, bez zmiany oryginalnej instancji.
Do czego służy biblioteka PDF w programowaniu w języku C#?
Biblioteka PDF, taka jak IronPDF, jest wykorzystywana w programowaniu w języku C# do generowania, edycji i manipulowania dokumentami PDF. Pomaga programistom w efektywnej integracji funkcji PDF z ich aplikacjami.




