Enumy w języku C# (jak działają dla programistów)
Enumy, skrócone formy enumeracji, to potężna funkcja, która pozwala programistom ustanowić zbiór nazwanych stałych. Te stałe sprawiają, że kod jest bardziej czytelny i łatwiejszy do utrzymania, dzięki nadawaniu wartościom znaczących nazw. W tym artykule przyjrzymy się podstawom i zaawansowanym koncepcjom enumeracji w C# poprzez różne przykłady i wyjaśnienia. Naszym celem jest dostarczenie wszechstronnego zrozumienia enumów oraz sposobu ich skutecznego użycia w Twoich aplikacjach C# przy użyciu biblioteki IronPDF do generowania PDF w .NET.
Wprowadzenie do enum w C
Enum to rodzaj wartościowy w C#, który umożliwia zmiennej bycie zbiorem wcześniej zdefiniowanych stałych, z których każda nazywana jest elementem enum. Słowo kluczowe enum jest używane do deklarowania typu enumeracji, zapewniając sposób grupowania stałych wartości pod jedną nazwą. Enums poprawiają czytelność kodu i zmniejszają błędy spowodowane przekazywaniem niepoprawnych wartości.
// Define an enum with four members
enum Season { Spring, Summer, Autumn, Winter }
// Define an enum with four members
enum Season { Spring, Summer, Autumn, Winter }
' Define an enum with four members
Friend Enum Season
Spring
Summer
Autumn
Winter
End Enum
W powyższym kodzie Season jest typem enum z czterema elementami: Wiosna, Lato, Jesień i Zima. Definiując ten enum, możemy teraz tworzyć zmienne typu Season, które mogą przechowywać tylko jedną z tych czterech wartości.
Podstawowy Typ Enumów
Zrozumienie Wartości Liczbowych Elementów Enum
Domyślnie podstawowym typem enum w C# jest int, znany jako podstawowy typ całkowity, a wartości liczbowe elementów enum zaczynają się od 0. Wartość liczbowa każdego elementu zwiększa się o 1 od poprzedniego elementu, chyba że jest określona inaczej. Możesz również określić, aby podstawowym typem enum był inny typ całkowity.
// Define an enum with a byte underlying type and specific values
enum Season : byte { Spring = 1, Summer, Autumn = 4, Winter }
// Define an enum with a byte underlying type and specific values
enum Season : byte { Spring = 1, Summer, Autumn = 4, Winter }
' Define an enum with a byte underlying type and specific values
Friend Enum Season As Byte
Spring = 1
Summer
Autumn = 4
Winter
End Enum
W tym przykładzie enum Season ma typ byte jako podstawowy typ. Wiosna ma jawnie przypisaną wartość 1, co czyni ją domyślną wartością, podczas gdy Lato, Jesień i Zima otrzymują odpowiadające im wartości na podstawie ich kolejności.
Używanie Enum w Twoim Kodzie
Aby użyć enum, po prostu zadeklaruj zmienną określonego typu enum i przypisz jej wartość enum, taką jak jedna z różnych wartości zdefiniowanych w deklaracji enum, używając składni kropkowej.
// Declare a Season variable and assign it an enum member value
Season currentSeason = Season.Autumn;
// Declare a Season variable and assign it an enum member value
Season currentSeason = Season.Autumn;
' Declare a Season variable and assign it an enum member value
Dim currentSeason As Season = Season.Autumn
Ta linia tworzy zmienną currentSeason typu Season i przypisuje jej wartość Autumn. To wyjaśnia, że currentSeason może przechowywać tylko wartość, która jest ważnym Season.
Konwersja Pomiędzy Wartościami Enum i Liczbami
Możesz zamienić wartość enum na odpowiadającą jej wartość liczbową za pomocą rzutowania i odwrotnie. Jest to przydatne, gdy musisz przechowywać lub przesyłać dane w ich formie liczbowej.
// Convert Season.Autumn to its integer value and vice versa
int autumnInt = (int)Season.Autumn; // autumnInt will be 4
Season season = (Season)4; // season will be Season.Autumn
// Convert Season.Autumn to its integer value and vice versa
int autumnInt = (int)Season.Autumn; // autumnInt will be 4
Season season = (Season)4; // season will be Season.Autumn
Imports System
' Convert Season.Autumn to its integer value and vice versa
Dim autumnInt As Integer = CInt(Math.Truncate(Season.Autumn)) ' autumnInt will be 4
Dim season As Season = CType(4, Season) ' season will be Season.Autumn
Tutaj autumnInt będzie mieć wartość 4, która odpowiada Autumn w enumie Season. Odwrotnie, season zostanie ustawione na Autumn podczas rzutowania liczby 4 z powrotem na Season.
Praca z Metodami Enum
C# oferuje kilka metod pracy z enum, takich jak Enum.GetName(), Enum.GetNames(), Enum.GetValue() i Enum.GetValues(), które są użyteczne do uzyskiwania dostępu do stałych int związanych z każdym elementem enum.
// Get names of all enum members and print them
string[] names = Enum.GetNames(typeof(Season));
foreach (string name in names)
{
Console.WriteLine(name);
}
// Get names of all enum members and print them
string[] names = Enum.GetNames(typeof(Season));
foreach (string name in names)
{
Console.WriteLine(name);
}
' Get names of all enum members and print them
Dim names() As String = System.Enum.GetNames(GetType(Season))
For Each name As String In names
Console.WriteLine(name)
Next name

Ten fragment kodu drukuje nazwy wszystkich elementów enumu Season. Takie metody są niezwykle przydatne podczas iteracji nad wszystkimi możliwymi wartościami enum lub konwersji między reprezentacją łańcuchową a wartością enum.
Przypisywanie Specyficznych Wartości Członkom Enum
Możesz przypisać konkretnym elementom enum określone wartości liczbowe, aby jawnie kontrolować ich wartość liczbową.
// Define an enum with custom integer values for members
enum ErrorCode : int { None = 0, NotFound = 404, Unauthorized = 401 }
// Define an enum with custom integer values for members
enum ErrorCode : int { None = 0, NotFound = 404, Unauthorized = 401 }
' Define an enum with custom integer values for members
Friend Enum ErrorCode As Integer
None = 0
NotFound = 404
Unauthorized = 401
End Enum
W tym przykładzie ErrorCode jest enumem z niestandardowymi wartościami liczbowymi przypisanymi do każdego elementu. Jest to przydatne w przypadku wcześniej zdefiniowanych kodów liczbowych, takich jak kody statusu HTTP.
Używanie Enum jako Bitów Flagowych
Używając atrybutu [Flags], możesz zdefiniować enum jako zbiór bitów flagowych. To pozwala na przechowywanie kombinacji wartości w pojedynczej zmiennej enum.
[Flags]
// Define an enum for permissions using bit flags
enum Permissions { None = 0, Read = 1, Write = 2, Execute = 4 }
[Flags]
// Define an enum for permissions using bit flags
enum Permissions { None = 0, Read = 1, Write = 2, Execute = 4 }
' Define an enum for permissions using bit flags
<Flags>
Friend Enum Permissions
None = 0
Read = 1
Write = 2
Execute = 4
End Enum
Dzięki enumowi Permissions, zdefiniowanemu powyżej, możesz połączyć różne uprawnienia za pomocą operatora bitowego OR.
// Combine permissions using bitwise OR
Permissions myPermissions = Permissions.Read | Permissions.Write;
// Combine permissions using bitwise OR
Permissions myPermissions = Permissions.Read | Permissions.Write;
' Combine permissions using bitwise OR
Dim myPermissions As Permissions = Permissions.Read Or Permissions.Write
To ustawia myPermissions na kombinację uprawnień Read i Write.
Enum i instrukcje Switch
Enumy działają wyjątkowo dobrze z instrukcjami switch, pozwalając na wykonanie różnych bloków kodu w oparciu o wartość enum.
// Use a switch statement with an enum
Season season = Season.Summer;
switch (season)
{
case Season.Spring:
Console.WriteLine("It's spring.");
break;
case Season.Summer:
Console.WriteLine("It's summer.");
break;
case Season.Autumn:
Console.WriteLine("It's autumn.");
break;
case Season.Winter:
Console.WriteLine("It's winter.");
break;
}
// Use a switch statement with an enum
Season season = Season.Summer;
switch (season)
{
case Season.Spring:
Console.WriteLine("It's spring.");
break;
case Season.Summer:
Console.WriteLine("It's summer.");
break;
case Season.Autumn:
Console.WriteLine("It's autumn.");
break;
case Season.Winter:
Console.WriteLine("It's winter.");
break;
}
' Use a switch statement with an enum
Dim season As Season = Season.Summer
Select Case season
Case Season.Spring
Console.WriteLine("It's spring.")
Case Season.Summer
Console.WriteLine("It's summer.")
Case Season.Autumn
Console.WriteLine("It's autumn.")
Case Season.Winter
Console.WriteLine("It's winter.")
End Select
Ten kod wydrukuje "To lato.", ponieważ zmienna season jest ustawiona na Season.Summer.
Analiza Łańcucha na Enum
C# pozwala na analizę łańcucha znaków, aby uzyskać odpowiadającą wartość enum, używając metody Enum.Parse().
// Parse a string into an enum value
string input = "Winter";
Season season = (Season)Enum.Parse(typeof(Season), input);
// Parse a string into an enum value
string input = "Winter";
Season season = (Season)Enum.Parse(typeof(Season), input);
' Parse a string into an enum value
Dim input As String = "Winter"
Dim season As Season = DirectCast(System.Enum.Parse(GetType(Season), input), Season)
Ten kod przekształca łańcuch "Winter" w odpowiadającą mu wartość enum Season.Winter.
Integracja IronPDF z enumami w C
Biblioteka PDF IronPDF do Dynamicznego Generowania Dokumentów to biblioteka PDF dla aplikacji .NET, która pomaga programistom tworzyć, edytować i manipulować dokumentami PDF z łatwością. Ta potężna biblioteka może być szczególnie przydatna w scenariuszach, gdzie wymagane jest dynamiczne generowanie PDF, takich jak generowanie raportów lub faktur. W tej sekcji przyjrzymy się, jak zintegrować IronPDF z enumem C# dla tworzenia raportów PDF z HTML w .NET, oraz omówimy proces instalacji IronPDF w Twoim projekcie.
Dzięki IronPDF, możesz zamienić dowolny HTML, URL lub stronę internetową na PDF, który wygląda dokładnie jak źródło. To świetna opcja do generowania PDF dla faktur, raportów i innych treści opartych na sieci. Gotowy do konwersji HTML na PDF? IronPDF sprawia, że proces jest bezproblemowy.
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}
Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer = New ChromePdfRenderer()
' 1. Convert HTML String to PDF
Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")
' 2. Convert HTML File to PDF
Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")
' 3. Convert URL to PDF
Dim url = "http://ironpdf.com" ' Specify the URL
Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
pdfFromUrl.SaveAs("URLToPDF.pdf")
End Sub
End Class
Instalacja IronPDF
Instalacja IronPDF jest bardzo prosta przy użyciu konsoli menedżera pakietów NuGet. Otwórz konsolę menedżera pakietów w Visual Studio i wpisz następujące polecenie:
Install-Package IronPdf
To polecenie zainstaluje IronPDF w naszym projekcie.
Alternatywnym sposobem jest zainstalowanie IronPDF w Twoim projekcie za pomocą Visual Studio. W Visual Studio, kliknij prawym przyciskiem myszy w eksploratorze rozwiązań i kliknij NuGet Package Manager for Solutions. Następnie kliknij kartę przeglądania po lewej stronie. Następnie wyszukaj IronPDF, kliknij zainstaluj i dodaj go do projektu.

Używanie IronPDF z Enum
Rozważmy scenariusz, w którym chcesz wygenerować dokument PDF zawierający raport o sprzedaży sezonowej. Możesz użyć enumów do reprezentowania różnych sezonów i IronPDF do generowania raportu PDF. Najpierw zdefiniuj enum dla sezonów:
public enum Season
{
Spring,
Summer,
Autumn,
Winter
}
public enum Season
{
Spring,
Summer,
Autumn,
Winter
}
Public Enum Season
Spring
Summer
Autumn
Winter
End Enum
Następnie napiszemy metodę, która generuje raport PDF na podstawie wybranego sezonu. Ta metoda wykorzysta IronPDF do stworzenia prostego dokumentu PDF, który przedstawi dane sprzedażowe dla danego sezonu.
using IronPdf;
public class SalesReportGenerator
{
public static void GenerateSeasonalSalesReport(Season season)
{
IronPdf.License.LicenseKey = "License-Key";
var Renderer = new IronPdf.ChromePdfRenderer();
var htmlTemplate = $"<h1>Sales Report for {season}</h1><p>This section contains sales data for the {season} season.</p>";
var pdf = Renderer.RenderHtmlAsPdf(htmlTemplate);
var outputPath = $@"{season}SalesReport.pdf";
pdf.SaveAs(outputPath);
Console.WriteLine($"PDF report generated: {outputPath}");
}
}
using IronPdf;
public class SalesReportGenerator
{
public static void GenerateSeasonalSalesReport(Season season)
{
IronPdf.License.LicenseKey = "License-Key";
var Renderer = new IronPdf.ChromePdfRenderer();
var htmlTemplate = $"<h1>Sales Report for {season}</h1><p>This section contains sales data for the {season} season.</p>";
var pdf = Renderer.RenderHtmlAsPdf(htmlTemplate);
var outputPath = $@"{season}SalesReport.pdf";
pdf.SaveAs(outputPath);
Console.WriteLine($"PDF report generated: {outputPath}");
}
}
Imports IronPdf
Public Class SalesReportGenerator
Public Shared Sub GenerateSeasonalSalesReport(ByVal season As Season)
IronPdf.License.LicenseKey = "License-Key"
Dim Renderer = New IronPdf.ChromePdfRenderer()
Dim htmlTemplate = $"<h1>Sales Report for {season}</h1><p>This section contains sales data for the {season} season.</p>"
Dim pdf = Renderer.RenderHtmlAsPdf(htmlTemplate)
Dim outputPath = $"{season}SalesReport.pdf"
pdf.SaveAs(outputPath)
Console.WriteLine($"PDF report generated: {outputPath}")
End Sub
End Class
W tym przykładzie definiujemy metodę GenerateSeasonalSalesReport, która przyjmuje enum Season jako parametr. Używa klasy ChromePdfRenderer IronPDF do generowania PDF z łańcucha HTML, który zawiera nazwę sezonu i tekst zastępczy dla danych sprzedażowych. PDF jest wtedy zapisywany z nazwą pliku, która zawiera nazwę sezonu.
Wykonanie
Aby wygenerować raport z sezonowej sprzedaży, wywołaj metodę GenerateSeasonalSalesReport z określonym sezonem:
static void Main(string[] args)
{
SalesReportGenerator.GenerateSeasonalSalesReport(Season.Winter);
}
static void Main(string[] args)
{
SalesReportGenerator.GenerateSeasonalSalesReport(Season.Winter);
}
Shared Sub Main(ByVal args() As String)
SalesReportGenerator.GenerateSeasonalSalesReport(Season.Winter)
End Sub
To wywołanie generuje dokument PDF nazwany WinterSalesReport.pdf, który zawiera raport sprzedaży na zimę.

Wnioski
Enumy w C# oferują bezpieczny typowo sposób pracy z zestawami powiązanych nazwanych stałych. Poprawiają one czytelność kodu, zmniejszają liczbę błędów i ułatwiają czystsze organizowanie kodu. Grupując powiązane wartości stałe pod znaczącą nazwą, enumy ułatwiają zrozumienie i utrzymanie kodu.
Integrując IronPDF z enumem w C#, możliwe jest dynamiczne generowanie dokumentów PDF na podstawie typów enumeracyjnych. IronPDF oferuje bezpłatną wersję próbną swoich wszechstronnych narzędzi PDF, zapewniającą szereg opcji pasujących do różnych potrzeb i rozmiarów projektów.
Często Zadawane Pytania
Czym są enumy w języku C# i dlaczego są przydatne?
Enumy, skrót od wyliczeń, to funkcja w języku C#, która pozwala programistom definiować zestaw nazwanych stałych. Poprawia to czytelność kodu i ułatwia jego utrzymanie, ponieważ grupuje wartości stałych pod jedną nazwą.
Jak zadeklarować i zainicjować enum w C#?
W języku C# deklaruje się wyliczenie za pomocą słowa kluczowego enum, po którym następuje nazwa wyliczenia i jego elementy. Na przykład enum Season { Spring, Summer, Autumn, Winter } tworzy wyliczenie o nazwie Season z czterema elementami.
Czy elementy wyliczenia w języku C# mogą mieć niestandardowe wartości bazowe?
Tak, w języku C# można przypisać konkretne wartości całkowitoliczbowe do elementów wyliczenia, co pozwala kontrolować ich reprezentację numeryczną. Na przykład wyliczenie ErrorCode { None = 0, NotFound = 404, Unauthorized = 401 } przypisuje niestandardowe wartości do każdego elementu.
Jak przekonwertować wartość enum na liczbę całkowitą i odwrotnie w języku C#?
Aby przekonwertować wartość enum na liczbę całkowitą, należy użyć rzutowania, np. (int)Season.Autumn. Aby przekonwertować liczbę całkowitą na enum, należy rzutować liczbę całkowitą na typ enum, np. (Season)4.
Jaki jest cel atrybutu [Flags] w wyliczeniach C#?
Atrybut [Flags] w języku C# pozwala na wykorzystanie wyliczenia (enum) jako zestawu flag bitowych, umożliwiając kombinacje wartości w jednej zmiennej. Jest to przydatne w sytuacjach, w których konieczne jest przedstawienie wielu wartości razem, na przykład w przypadku łączenia uprawnień „Odczyt” i „Zapis”.
Jak wykorzystać enumy do generowania dynamicznych dokumentów PDF w języku C#?
Enumy mogą być używane do reprezentowania różnych kategorii lub typów podczas dynamicznego generowania dokumentów PDF. Na przykład enum „Sezon” może służyć do tworzenia plików PDF z raportami sprzedaży sezonowej poprzez wybór odpowiedniej wartości enum w celu dynamicznego dostosowania treści.
Jak wygląda proces instalacji biblioteki do generowania plików PDF w projekcie C#?
Aby zainstalować bibliotekę do generowania plików PDF w projekcie C#, należy użyć konsoli menedżera pakietów NuGet, wpisując polecenie typu Install-Package [NazwaBiblioteki], lub skorzystać z interfejsu menedżera pakietów NuGet w programie Visual Studio.
Jak można zaimplementować wyliczenia za pomocą instrukcji switch w języku C#?
Enumy mogą być używane z instrukcjami switch w celu wykonania różnych bloków kodu w oparciu o wartość enumu. Na przykład instrukcja switch na zmiennej enum „Season” może wykonać określoną logikę dla każdej pory roku, zwiększając przejrzystość i organizację kodu.
Jak przekształcić ciąg znaków na enum w języku C#?
Aby przekształcić ciąg znaków na wartość wyliczeniową w języku C#, można użyć metody Enum.Parse(). Na przykład Enum.Parse(typeof(Season), „Winter”) przekształca ciąg znaków „Winter” na odpowiadającą mu wartość wyliczeniową „Season.Winter”.
Jakie metody są dostępne do pracy z nazwami enum w języku C#?
Język C# udostępnia metody takie jak Enum.GetName() i Enum.GetNames() do pracy z nazwami enum. Metoda Enum.GetName() zwraca nazwę stałej o podanej wartości, natomiast Enum.GetNames() zwraca tablicę zawierającą nazwy wszystkich stałych w enum.




