Zum Fußzeileninhalt springen
.NET HILFE

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 eine öffentliche Klasse Auto mit einer privaten Zeichenfolge Beschreibung Eigenschaft vor. 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 eines privaten Zeichenfolge Beschreibung zu erhalten, ohne ihnen direkten Zugriff zur Änderung zu geben. 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 öffentlich und privat.

  • Öffentlich: Felder oder Eigenschaften, die als öffentlich deklariert sind, können von überall in Ihrem Programm zugegriffen werden. Sie könnten beispielsweise eine public int Age-Eigenschaft haben, die von jedem Teil Ihres Codes zugegriffen und geändert werden kann.
  • Private: Eigenschaften oder Felder, die als private deklariert sind, können nur innerhalb der definierten Klasse zugegriffen werden, zum Beispiel private 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
$vbLabelText   $csharpLabel

In der obigen Klasse Person haben wir sowohl einen Getter (GetName) als auch einen Setter (SetName) für die name Eigenschaft. Wenn Sie die statische Leere Main Methode ausführen, wird "John" gedruckt, da wir diesen Wert für den Namen mit dem Setter 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 zum Deklarieren eines privaten Feldes und seiner zugehörigen Eigenschaft geben. 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
$vbLabelText   $csharpLabel

In der Studenten Klasse ist die Name Eigenschaft sowohl ein Getter als auch ein Setter, die automatisch implementiert werden. Der C#-Compiler erstellt ein privates Zeichenfolge name Feld im Hintergrund, und die Name-Eigenschaft bietet 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.

Nehmen wir an, wir möchten eine schreibgeschützte Zeichenfolge Beschreibung Eigenschaft zu unserer Person Klasse 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
$vbLabelText   $csharpLabel

In diesem Beispiel kann die Beschreibung Eigenschaft nur im Konstruktor der Person Klasse gesetzt werden. ### Speichern von Formulardaten in einer HashMap für PDFs

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 mit einem privaten 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
$vbLabelText   $csharpLabel

In der Klasse Programm hat die Beschreibung Eigenschaft ein privates set, was bedeutet, dass sie von außerhalb der Klasse nicht 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
$vbLabelText   $csharpLabel

In diesem Beispiel erbt die Student Klasse von Person und überschreibt den Setter der Name Eigenschaft. Es fügt eine Validierungsprüfung hinzu, bevor der Name gesetzt wird, um sicherzustellen, dass er weder leer noch null ist.

Wir stellen Ihnen Iron Suite vor, um Ihre C#-Entwicklung zu optimieren.

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
$vbLabelText   $csharpLabel

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:

  1. Getter und Setter: Sie helfen, auf die privaten Felder einer Klasse zuzugreifen und sie zu ändern.
  2. Auto-Eigenschaften: Eine elegante Möglichkeit, automatische Getter und Setter mit Hilfe von automatisch implementierten Eigenschaften zu haben.
  3. Zugriffsmodifikatoren: Sie helfen, die Zugänglichkeit von Eigenschaften fein abzustimmen.

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 zu engagieren, beginnen individuelle Lizenzen ab $799. 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# ermöglichen die Kontrolle über den Zugriff auf private Eigenschaften einer Klasse. Getter rufen den Wert einer Eigenschaft ab, während Setter es erlauben, eine Eigenschaft zu ändern. Dies sichert einen sicheren und kontrollierten Zugang zu den 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 dich.

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 IronSuite 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 IronSuite vorteilhaft für C#-Entwickler?

Die IronSuite 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.

Jacob Mellor, Chief Technology Officer @ Team Iron
Chief Technology Officer

Jacob Mellor ist Chief Technology Officer bei Iron Software und ein visionärer Ingenieur, der führend in der C# PDF-Technologie ist. Als ursprünglicher Entwickler der Iron Software-Kerncodebasis hat er die Produktarchitektur des Unternehmens seit seiner Gründung gestaltet und zusammen mit CEO Cameron Rimington in ein Unternehmen ...

Weiterlesen