C# Getter Setter (jak to działa dla programistów)
Gettery i settery są kluczowymi pojęciami w językach programowania obiektowego, takich jak C#. Te dwie metody pozwalają nam kontrolować dostęp i modyfikację właściwości klasy. W tym poradniku zbadamy zarówno podstawowe, jak i średniozaawansowane aspekty getterów C# i prywatnych setterów, używając bloków kodu.
Wprowadzenie do Getterów i Setterów
Czym są Gettery i Settery?
W istocie gettery i settery to nic innego jak metody umożliwiające dostęp do prywatnych zmiennych w klasie. Getter zwraca wartość prywatnego pola zmiennej, podczas gdy setter ją modyfikuje. Te metody zapewniają, że wewnętrzne dane klasy (pola) są dostępowane lub modyfikowane w bezpieczny i poprawny sposób.
Dlaczego ich potrzebujemy?
Wyobraź sobie posiadanie public class Car z właściwością private string description. Jeżeli ktoś z zewnątrz tej klasy chce znać opis, nie może bezpośrednio go uzyskać, ponieważ jest prywatny. Tutaj wchodzą w grę gettery i settery.
Getter pozwoliłby użytkownikom pobrać wartość private string description, nie dając im bezpośredniego dostępu do jego modyfikacji. Z drugiej strony, setter dałby użytkownikom możliwość zmiany opisu pod warunkami, które ustalamy.
Modyfikatory dostępu
Modyfikatory dostępu definiują poziom widoczności i dostępności pola lub właściwości z zewnątrz klasy. Najczęściej stosowane modyfikatory to public i private.
Public: Pola lub właściwości zadeklarowane jakopublicmogą być dostępne z dowolnego miejsca w twoim programie. Na przykład, możesz mieć właściwośćpublic int Age, która może być dostępna i modyfikowana przez dowolną część twojego kodu.Private: Właściwości lub pola zadeklarowane jakoprivatemogą być dostępne tylko wewnątrz określonej klasy, na przykładprivate int age. Ta enkapsulacja pomaga zapobiegać nieautoryzowanym modyfikacjom i zapewnia, że wewnętrzny stan klasy jest prawidłowo zachowywany.
Prosty Getter i Setter
Zacznijmy od prostego przykładu.
using System;
public class Person
{
private string name; // This is a private string name property variable
// This is the getter
public string GetName()
{
return name;
}
// This is the setter
public void SetName(string newName)
{
name = newName;
}
}
class Program
{
static void Main()
{
Person person = new Person();
person.SetName("John");
Console.WriteLine(person.GetName());
}
}
using System;
public class Person
{
private string name; // This is a private string name property variable
// This is the getter
public string GetName()
{
return name;
}
// This is the setter
public void SetName(string newName)
{
name = newName;
}
}
class Program
{
static void Main()
{
Person person = new Person();
person.SetName("John");
Console.WriteLine(person.GetName());
}
}
Imports System
Public Class Person
Private name As String ' This is a private string name property variable
' This is the getter
Public Function GetName() As String
Return name
End Function
' This is the setter
Public Sub SetName(ByVal newName As String)
name = newName
End Sub
End Class
Friend Class Program
Shared Sub Main()
Dim person As New Person()
person.SetName("John")
Console.WriteLine(person.GetName())
End Sub
End Class
W powyższym class Person mamy zarówno getter (GetName), jak i setter (SetName) dla właściwości name. Kiedy uruchomisz metodę static void Main, wydrukuje 'John', ponieważ ustawiliśmy tę wartość dla nazwy za pomocą settera.
Właściwości automatycznie wdrożone
Teraz możesz pomyśleć: 'Czy zawsze muszę pisać oddzielne metody dla getterów i setterów?' Odpowiedź brzmi: 'nie'. C# wprowadził pojęcie zwane 'właściwościami automatycznie wdrożonymi', aby to uprościć.
W C# możesz używać automatycznych właściwości, które dają skróconą formę deklarowania private field i powiązanej z nim właściwości. Oto przykład:
using System;
public class Student
{
public string Name { get; set; } // This is an auto-implemented or automatic property
public string Title { get; set; } // Another auto-implemented property
}
class Program
{
static void Main()
{
Student student = new Student();
student.Name = "Alice"; // Using setter
Console.WriteLine(student.Name); // Using getter
}
}
using System;
public class Student
{
public string Name { get; set; } // This is an auto-implemented or automatic property
public string Title { get; set; } // Another auto-implemented property
}
class Program
{
static void Main()
{
Student student = new Student();
student.Name = "Alice"; // Using setter
Console.WriteLine(student.Name); // Using getter
}
}
Imports System
Public Class Student
Public Property Name() As String ' - This is an auto-implemented or automatic property
Public Property Title() As String ' - Another auto-implemented property
End Class
Friend Class Program
Shared Sub Main()
Dim student As New Student()
student.Name = "Alice" ' Using setter
Console.WriteLine(student.Name) ' Using getter
End Sub
End Class
W klasie Student, właściwość Name jest zarówno getterem, jak i setterem, które są automatycznie wdrożone. Kompilator C# tworzy pole private string name w tle, a właściwość Name zapewnia dostęp do tego pola.
Zaawansowane modyfikatory dostępu we właściwościach
Właściwości tylko do odczytu
Czasami możesz chcieć zapewnić właściwość, która może być odczytywana, ale nie modyfikowana z zewnątrz. Tutaj przydatne są właściwości tylko do odczytu. Możesz pominąć setter we właściwości, aby uczynić ją tylko do odczytu.
Załóżmy, że chcemy dodać właściwość string Description tylko do odczytu do naszej klasy Person:
public class Person
{
public string Name { get; set; }
public string Description { get; }
public Person(string name, string description)
{
Name = name;
Description = description;
}
}
public class Person
{
public string Name { get; set; }
public string Description { get; }
public Person(string name, string description)
{
Name = name;
Description = description;
}
}
Public Class Person
Public Property Name() As String
Public ReadOnly Property Description() As String
Public Sub New(ByVal name As String, ByVal description As String)
Me.Name = name
Me.Description = description
End Sub
End Class
W tym przykładzie, właściwość Description może być ustawiana tylko w konstruktorze klasy Person. Po ustawieniu nie może być modyfikowana z zewnątrz.
Prywatne Settery
Czasami możesz chcieć pozwolić na odczytanie właściwości z zewnątrz klasy, ale modyfikowanie tylko z wnętrza klasy. Osiąga się to za pomocą private set.
using System;
public class Program
{
public string Description { get; private set; }
public Program()
{
Description = "This is a program about getters and setters.";
}
}
class ProgramTest
{
static void Main()
{
Program myProgram = new Program();
Console.WriteLine(myProgram.Description); // Allowed
// myProgram.Description = "New Description"; // Not allowed
}
}
using System;
public class Program
{
public string Description { get; private set; }
public Program()
{
Description = "This is a program about getters and setters.";
}
}
class ProgramTest
{
static void Main()
{
Program myProgram = new Program();
Console.WriteLine(myProgram.Description); // Allowed
// myProgram.Description = "New Description"; // Not allowed
}
}
Imports System
Public Class Program
Private privateDescription As String
Public Property Description() As String
Get
Return privateDescription
End Get
Private Set(ByVal value As String)
privateDescription = value
End Set
End Property
Public Sub New()
Description = "This is a program about getters and setters."
End Sub
End Class
Friend Class ProgramTest
Shared Sub Main()
Dim myProgram As New Program()
Console.WriteLine(myProgram.Description) ' Allowed
' myProgram.Description = "New Description"; // Not allowed
End Sub
End Class
W class Program, właściwość Description posiada private set, co oznacza, że nie może być zmieniana z zewnątrz klasy, co zapewnia integralność danych.
Dziedziczenie i przesłanianie
Pracując z klasami pochodnymi, możesz przesłaniać metody gettera i settera, aby dostosować ich działanie. Pozwala to na dodanie dodatkowej logiki podczas pobierania lub ustawiania wartości.
public class Person
{
public virtual string Name { get; set; }
}
public class Student : Person
{
private string studentID;
public override string Name
{
get { return base.Name; }
set
{
if (!string.IsNullOrEmpty(value))
base.Name = value;
}
}
}
public class Person
{
public virtual string Name { get; set; }
}
public class Student : Person
{
private string studentID;
public override string Name
{
get { return base.Name; }
set
{
if (!string.IsNullOrEmpty(value))
base.Name = value;
}
}
}
Public Class Person
Public Overridable Property Name() As String
End Class
Public Class Student
Inherits Person
Private studentID As String
Public Overrides Property Name() As String
Get
Return MyBase.Name
End Get
Set(ByVal value As String)
If Not String.IsNullOrEmpty(value) Then
MyBase.Name = value
End If
End Set
End Property
End Class
W tym przykładzie, klasa Student dziedziczy po Person i przesłania setter właściwości Name. Dodaje ona sprawdzenie walidacyjne przed ustawieniem nazwy, zapewniając, że nie jest pusta lub null.
Wprowadzenie Iron Suite do ulepszania twojego programowania w C
Iron Suite to zbiór narzędzi badawczych, które znacznie zwiększają możliwości programowania w C#. Zawiera IronPDF, IronXL, IronOCR i IronBarcode. Każde z tych narzędzi służy unikalnemu celowi i może być zintegrowane z różnymi aspektami C#.
IronPDF - Potężne narzędzie do zarządzania PDF
Dowiedz się więcej o IronPDF, bibliotece, która pozwala programistom tworzyć, odczytywać i edytować dokumenty PDF w C#. Niezależnie od tego, czy jest to konwersja HTML do PDF, czy zarządzanie metadanymi PDF za pomocą getterów i setterów, IronPDF pokrywa twoje potrzeby.
IronPDF wyróżnia się w konwersji HTML do PDF, zapewniając precyzyjne zachowanie oryginalnych układów i stylów. Idealnie nadaje się do tworzenia plików PDF z treści internetowych, takich jak raporty, faktury i dokumentacja. Dzięki obsłudze plików HTML, adresów URL i surowych ciągów znaków HTML, IronPDF z łatwością tworzy wysokiej jakości dokumenty 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");
}
}
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
IronXL - Prosta manipulacja Excel
Pracując z plikami Excel, IronXL Excel Library upraszcza proces odczytu i zapisu. To narzędzie może być używane do manipulacji prywatnymi i publicznymi łańcuchami lub liczbami całkowitymi w plikach Excel, podobnie jak obsługujesz dane wewnątrz klasy używając tej samej składni dla getterów i setterów w C#.
IronOCR — optyczne rozpoznawanie znaków w C
Przeglądaj IronOCR, bibliotekę rozpoznawania tekstu, która tłumaczy obrazy na przeszukiwalny tekst. Jeśli twoja aplikacja obejmuje odczytywanie tekstu ze skanowanych dokumentów, potężne możliwości IronOCR mogą być łatwo zintegrowane. Może obsługiwać prywatne pola i publiczne opisy łańcuchów, tak jak można by oczekiwać w klasie Person lub klasie Student z poprzedniego przykładu.
IronBarcode - Biblioteka do odczytu i zapisu kodów kreskowych
Odkryj funkcje IronBarcode dla aplikacji wymagających odczytu i zapisu kodów kreskowych. Pozwala zarówno na bezpośredni dostęp do danych kodu kreskowego, jak i na dostosowanie za pomocą automatycznych właściwości, podobnie jak gettery i settery używane w programowaniu C#.
Iron Suite i Gettery i Settery
Pakiet Iron Suite płynnie integruje się z programowaniem w C#, w tym z getterami i setterami. Te narzędzia dodają wartość do każdego projektu C#.
Wnioski
Podsumowując:
Getter and Setter: Pomagają w dostępie i modyfikacji prywatnych pól klasy.Auto Properties: Elegancki sposób na posiadanie automatycznych getterów i setterów przy pomocy właściwości automatycznie wdrożonych.Access Modifiers: Pomagają dostosować dostępność właściwości.
Do tej pory powinieneś mieć solidne zrozumienie, jak używać getterów i setterów w C#.
Pakiet narzędzi Iron Suite oferuje niesamowitą funkcjonalność dla programistów C#. Każdy z tych produktów, w tym IronPDF, IronXL, IronOCR i IronBarcode, posiada bezpłatną wersję próbną narzędzi Iron Software, pozwalając ci na eksplorację i integrację tych potężnych bibliotek w swoich projektach bez początkowego inwestowania.
Kiedy będziesz gotów do podjęcia decyzji, licencje indywidualne zaczynają się od $799. Jeśli okaże się, że więcej niż jedno z tych narzędzi pasuje do twoich potrzeb, możesz skorzystać z okazji, aby kupić pełny pakiet Iron Suite w cenie zaledwie dwóch indywidualnych licencji.
Często Zadawane Pytania
Jaki jest cel getterów i setterów w C#?
Gettery i settery w C# służą do kontrolowania dostępu do prywatnych właściwości klasy. Gettery pobierają wartość właściwości, podczas gdy settery pozwalają na jej modyfikację. Ta enkapsulacja zapewnia bezpieczny i kontrolowany dostęp do danych klasy.
Jak modyfikatory dostępu wpływają na widoczność właściwości w C#?
Modyfikatory dostępu, takie jak public i private, determinują widoczność i dostępność właściwości klasy w C#. Właściwości public są dostępne z każdego miejsca, natomiast właściwości private są ograniczone do klasy, w której zostały zadeklarowane.
Czym są właściwości samowykonawcze w C#?
Właściwości samowykonawcze zapewniają skróconą formę deklaracji właściwości w C#. Pozwalają na zdefiniowanie właściwości bez konieczności jawnego pisania oddzielnego pola, gettera i settera. Kompilator automatycznie tworzy pole pomocnicze.
Jak można stworzyć właściwość tylko do odczytu w C#?
W C# można stworzyć właściwość tylko do odczytu poprzez pominięcie settera w deklaracji właściwości. Oznacza to, że właściwość może być ustawiona tylko w obrębie klasy, np. w konstruktorze, i nie może być modyfikowana zewnętrznie.
Jak używać prywatnych setterów w C#?
Prywatne settery w C# pozwalają na modyfikację właściwości tylko w obrębie klasy, w której są zadeklarowane, jednocześnie umożliwiając zewnętrznemu kodowi odczytanie właściwości. To jest przydatne w podtrzymywaniu integralności danych przy jednoczesnym zapewnieniu kontrolowanego dostępu.
Czy można nadpisać zachowanie właściwości w klasach pochodnych w C#?
Tak, w C# można nadpisać zachowanie właściwości w klasach pochodnych, oznaczając właściwość w klasie bazowej jako virtual i używając słowa kluczowego override w klasie pochodnej. To pozwala na dostosowanie zachowania gettera i settera.
Jak przekonwertować HTML na PDF w języku C#?
Możesz użyć metody RenderHtmlAsPdf biblioteki IronPDF do konwersji ciągów HTML na pliki PDF. Możesz również konwertować pliki HTML na pliki PDF za pomocą metody RenderHtmlFileAsPdf.
Jakie narzędzia są dostępne do ulepszania programowania w języku C# o funkcje związane z plikami PDF i BarCode?
Pakiet Iron Suite zawiera narzędzia takie jak IronPDF i IronBarcode, które usprawniają programowanie w języku C#, oferując funkcje takie jak zarządzanie plikami PDF oraz odczyt i zapis kodów kreskowych. Narzędzia te płynnie integrują się z projektami C#.
Dlaczego pakiet Iron Suite jest przydatny dla programistów C#?
Pakiet Iron Suite jest przydatny dla programistów C#, ponieważ oferuje szereg zaawansowanych narzędzi, które płynnie integrują się z projektami C#. Narzędzia te zapewniają zaawansowane funkcje, takie jak zarządzanie plikami PDF, obróbka plików Excel, funkcje OCR oraz odczyt i zapis kodów kreskowych.




