C# Get-Set (Wie es für Entwickler funktioniert)
Getter und Setter sind grundlegende Konzepte in objektorientierten Programmiersprachen wie C#. Diese beiden Methoden ermöglichen es uns, den Zugriff und die Änderung von Klassen-Eigenschaften zu kontrollieren. In diesem Tutorial werden wir sowohl grundlegende als auch fortgeschrittene Aspekte von C#-Gettern und privaten Setzern anhand von Code-Blöcken untersuchen.
Einführung in Getter und Setter
Was sind Getter und Setter?
Im Kern sind Getter und Setter nichts anderes als Methoden, die den Zugriff auf private Variablen in einer Klasse ermöglichen. Der Getter gibt den Wert einer privaten Feldvariablen zurück, während der Setter ihn ändert. Diese Methoden stellen sicher, dass die internen Daten (Felder) einer Klasse sicher und korrekt zugegriffen oder geändert werden.
Warum brauchen wir sie?
Stellen Sie sich vor, Sie hätten ein public class Car mit einer private string description Eigenschaft. Wenn jemand außerhalb dieser Klasse die Beschreibung wissen möchte, kann er nicht direkt darauf zugreifen, da sie privat ist. Hier kommt die Rolle der Getter und Setter ins Spiel.
Ein Getter würde es Benutzern ermöglichen, den Wert von private string description abzurufen, ohne ihnen direkten Zugriff auf die Änderung dieses Wertes zu gewähren. Auf der anderen Seite würde ein Setter den Benutzern erlauben, die Beschreibung unter den von uns festgelegten Bedingungen zu ändern.
Zugriffsmodifikatoren
Zugriffsmodifikatoren definieren das Sichtbarkeits- und Zugänglichkeitsniveau eines Feldes oder einer Eigenschaft von außerhalb der Klasse. Die am häufigsten verwendeten Modifikatoren sind public und private.
Public: Felder oder Eigenschaften, die mitpublicdeklariert wurden, können von überall in Ihrem Programm aufgerufen werden. Beispielsweise könnten Sie einepublic int AgeEigenschaft haben, auf die von jedem Teil Ihres Codes zugegriffen und die geändert werden kann.Private: Eigenschaften oder Felder, die mitprivatedeklariert wurden, können nur innerhalb der definierten Klasse aufgerufen werden, zum Beispielprivate int age. Diese Kapselung hilft, unbefugte Änderungen zu verhindern und stellt sicher, dass der interne Zustand der Klasse ordnungsgemäß beibehalten wird.
Einfache Getter und Setter
Beginnen wir mit einem einfachen Beispiel.
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
Im obigen class Person haben wir sowohl einen Getter (GetName) als auch einen Setter (SetName) für die name Eigenschaft. Wenn Sie die Methode static void Main ausführen, wird "John" ausgegeben, da wir diesen Wert für den Namen mithilfe des Setters festgelegt haben.
Auto-Implementierte Eigenschaften
Nun, Sie könnten denken: "Muss ich immer separate Methoden für Getter und Setter schreiben?" Die Antwort ist "nein." C# hat ein Konzept eingeführt, das als "automatisch implementierte Eigenschaften" oder "automatische Eigenschaften" bezeichnet wird, um dies zu vereinfachen.
In C# können Sie automatische Eigenschaften verwenden, die Ihnen eine Kurzform für die Deklaration eines private field und seiner zugehörigen Eigenschaft bieten. Hier ist ein Beispiel:
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
In der Klasse Student ist die Eigenschaft Name sowohl ein Getter als auch ein Setter, die automatisch implementiert werden. Der C#-Compiler erstellt im Hintergrund ein Feld namens private string name, und die Eigenschaft Name ermöglicht den Zugriff auf dieses Feld.
Erweiterte Zugriffsmodifikatoren in Eigenschaften
Nur-Lese-Eigenschaften
Manchmal möchte man vielleicht eine Eigenschaft anbieten, die gelesen, aber nicht extern geändert werden kann. Hier kommen Leseeigenschaften ins Spiel. Sie können den Setter in einer Eigenschaft weglassen, um sie schreibgeschützt zu machen.
Angenommen, wir möchten unserer Klasse Person eine schreibgeschützte Eigenschaft string Description hinzufügen:
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
In diesem Beispiel kann die Eigenschaft Description nur innerhalb des Konstruktors der Klasse Person gesetzt werden.
Private Setzer
Manchmal möchte man vielleicht, dass die Eigenschaft von außerhalb der Klasse gelesen werden kann, aber nur von innerhalb der Klasse gesetzt werden kann. Dies wird durch die Verwendung eines private set erreicht.
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
In der class Program hat die Description Eigenschaft eine private set, was bedeutet, dass sie nicht von außerhalb der Klasse geändert werden kann, wodurch die Integrität der Daten gewährleistet wird.
Vererbung und Overriding
Wenn man mit abgeleiteten Klassen arbeitet, kann man die Getter- und Setter-Methoden überschreiben, um ihr Verhalten anzupassen. Dies ermöglicht es Ihnen, zusätzliche Logik beim Abrufen oder Setzen von Werten hinzuzufügen.
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
In diesem Beispiel erbt die Klasse Student von Person und überschreibt den Setter der Eigenschaft Name. Es fügt eine Validierungsprüfung hinzu, bevor der Name gesetzt wird, um sicherzustellen, dass er weder leer noch null ist.
Iron Suite zur Optimierung Ihrer C#-Entwicklung
Iron Suite ist eine Sammlung von Forschungstools, die die C# Entwicklungskapazitäten erheblich steigern. Es beinhaltet IronPDF, IronXL, IronOCR und IronBarcode. Jedes dieser Tools hat einen einzigartigen Zweck und kann in verschiedenen Aspekten von C# integriert werden.
IronPDF - Ein leistungsfähiges PDF-Verwaltungstool
Erfahren Sie mehr über IronPDF, welches eine Bibliothek ist, die es Entwicklern ermöglicht, PDF-Dokumente in C# zu erstellen, zu lesen und zu bearbeiten. Egal ob es darum geht, HTML in PDF zu konvertieren oder PDF-Metadaten über Getter und Setter zu verwalten, IronPDF bietet alles, was Sie brauchen.
IronPDF überzeugt in der HTML-zu-PDF-Konvertierung, indem es den originalen Layouts und Stilen präzise erhält. Es ist ideal zur Erstellung von PDFs aus webbasierten Inhalten wie Berichten, Rechnungen und Dokumentationen. Mit Unterstützung für HTML-Dateien, URLs und rohe HTML-Strings erstellt IronPDF problemlos hochwertige PDF-Dokumente.
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 - Excel-Bearbeitung leicht gemacht
Bei der Arbeit mit Excel-Dateien vereinfacht die IronXL Excel-Bibliothek den Lese- und Schreibprozess. Dieses Tool kann verwendet werden, um private und öffentliche Zeichenfolgen oder Ganzzahlen von Excel-Dateien zu manipulieren, ähnlich wie Sie Daten innerhalb einer Klasse mit der gleichen Syntax für Getter und Setter in C# behandeln könnten.
IronOCR – Optische Zeichenerkennung in C
Erkunden Sie IronOCR, eine Bibliothek zur optischen Zeichenerkennung, die Bilder in durchsuchbaren Text übersetzt. Wenn Ihre Anwendung es beinhaltet, Text aus gescannten Dokumenten zu lesen, können die leistungsstarken Funktionen von IronOCR leicht integriert werden. Es kann private Felder und öffentliche Zeichenfolgenbeschreibungen handhaben, genau wie Sie es in einer Klasse Person oder Klasse Student aus dem vorherigen Beispielaufbau erwarten würden.
IronBarcode - Bibliothek zum Lesen und Schreiben von Barcodes
Entdecken Sie IronBarcode-Funktionen für Anwendungen, die Barcode-Lesen und Schreiben erfordern. Es erlaubt sowohl direkten Zugriff auf Barcodedaten als auch Anpassung durch automatische Eigenschaften, genau wie die in der C#-Programmierung verwendeten Getter und Setter.
Iron Suite und Getter und Setter
Das Iron Suite Paket integriert sich nahtlos mit der C#-Entwicklung, einschließlich Getter und Setter. Diese Tools fügen jedem C#-Projekt Wert hinzu.
Abschluss
Zusammenfassend:
Getter and Setter: Sie helfen beim Zugriff auf und der Änderung der privaten Felder einer Klasse.Auto Properties: Eine elegante Möglichkeit, automatische Getter und Setter mithilfe von automatisch implementierten Eigenschaften zu haben.Access Modifiers: Sie helfen dabei, die Zugänglichkeit von Eigenschaften feinabzustimmen.
Bis jetzt sollten Sie ein solides Verständnis dafür haben, wie man Getter und Setter in C# verwendet.
Das Iron Suite-Paket bietet C#-Entwicklern unglaubliche Funktionalitäten. Jedes dieser Produkte, einschließlich IronPDF, IronXL, IronOCR und IronBarcode, kommt mit einem kostenlosen Test der Iron Software-Tools, der es Ihnen ermöglicht, diese leistungsstarken Bibliotheken in Ihre Projekte zu erkunden und zu integrieren, ohne anfängliche Investition.
Wenn Sie bereit sind, sich festzulegen, beginnen die Einzellizenzen bei $999. Wenn Sie feststellen, dass mehr als eines dieser Tools Ihren Bedürfnissen entspricht, können Sie die Gelegenheit nutzen, das komplette Iron Suite Paket zum Preis von nur zwei Einzellizenzen zu kaufen.
Häufig gestellte Fragen
Was ist der Zweck von Gettern und Settern in C#?
Getter und Setter in C# werden verwendet, um den Zugriff auf private Eigenschaften einer Klasse zu kontrollieren. Getter rufen den Wert einer Eigenschaft ab, während Setter es ermöglichen, eine Eigenschaft zu ändern. Diese Kapselung sorgt für sicheren und kontrollierten Zugriff auf die Daten der Klasse.
Wie beeinflussen Zugriffsmethoden die Sichtbarkeit von Eigenschaften in C#?
Zugriffsmethoden wie public und private bestimmen die Sichtbarkeit und Zugänglichkeit der Eigenschaften einer Klasse in C#. Public-Eigenschaften sind von überall aus zugänglich, während private-Eigenschaften auf die Klasse beschränkt sind, in der sie deklariert wurden.
Was sind auto-implementierte Eigenschaften in C#?
Auto-implementierte Eigenschaften bieten eine Kurzschriftweise zum Deklarieren von Eigenschaften in C#. Sie ermöglichen es, eine Eigenschaft zu definieren, ohne explizit ein separates Feld, einen Getter und einen Setter schreiben zu müssen. Der Compiler erstellt automatisch ein unterstützendes Feld für Sie.
Wie kann man eine schreibgeschützte Eigenschaft in C# erstellen?
In C# kann man eine schreibgeschützte Eigenschaft erstellen, indem man den Setter in der Eigenschaftsdeklaration weglässt. Dies bedeutet, dass die Eigenschaft nur innerhalb der Klasse gesetzt werden kann, zum Beispiel in einem Konstruktor, und extern nicht geändert werden kann.
Wie verwendet man private Setter in C#?
Private Setter in C# erlauben es, eine Eigenschaft nur innerhalb der Klasse, in der sie deklariert ist, zu ändern, während der externe Code weiterhin die Eigenschaft lesen darf. Dies ist nützlich, um die Integrität der Daten zu wahren, während kontrollierter Zugriff gewährt wird.
Kann man das Verhalten von Eigenschaften in abgeleiteten Klassen in C# überschreiben?
Ja, in C# kann man das Verhalten von Eigenschaften in abgeleiteten Klassen überschreiben, indem man die Eigenschaft in der Basisklasse als virtual kennzeichnet und das override-Schlüsselwort in der abgeleiteten Klasse verwendet. Dies ermöglicht die Anpassung des Getter- und Setter-Verhaltens.
Wie kann man HTML in C# in PDF konvertieren?
Sie können die RenderHtmlAsPdf-Methode von IronPDF verwenden, um HTML-Strings in PDFs zu konvertieren. Sie können auch HTML-Dateien mit RenderHtmlFileAsPdf in PDFs konvertieren.
Welche Tools stehen zur Verfügung, um die C#-Entwicklung mit PDF- und Barcode-Funktionalitäten zu verbessern?
Die Iron Suite bietet Tools wie IronPDF und IronBarcode, die die C#-Entwicklung durch Funktionen wie PDF-Verwaltung und Barcode-Lesen/Schreiben verbessern. Diese Tools integrieren sich nahtlos in C#-Projekte.
Was macht die Iron Suite vorteilhaft für C#-Entwickler?
Die Iron Suite ist vorteilhaft für C#-Entwickler, da sie eine Reihe leistungsstarker Tools bietet, die sich nahtlos in C#-Projekte integrieren. Diese Tools bieten erweiterte Funktionen wie PDF-Verwaltung, Excel-Manipulation, OCR-Fähigkeiten und Barcode-Lesen/Schreiben.




