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 vor, Sie haben eine 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 den Benutzern ermöglichen, den Wert einer private string description abzurufen, ohne ihnen direkten Zugriff zu geben, um sie zu ändern. 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 als public deklariert sind, können von überall in Ihrem Programm aus zugegriffen werden. Zum Beispiel könnten Sie eine public int Age-Eigenschaft haben, die von jedem Teil Ihres Codes aus zugegriffen und modifiziert werden kann.
  • Private: Eigenschaften oder Felder, die als private deklariert sind, können nur innerhalb der definierten Klasse, zum Beispiel private int age, zugegriffen werden. 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());
    }
}
$vbLabelText   $csharpLabel

Im obigen class Person haben wir sowohl einen Getter (GetName) als auch einen Setter (SetName) für die name-Eigenschaft. Wenn Sie die static void 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 Abkürzung zum Deklarieren einer private field und deren zugehöriger 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
    }
}
$vbLabelText   $csharpLabel

In der Student-Klasse ist die Name-Eigenschaft sowohl ein Getter als auch ein Setter, die automatisch implementiert sind. Der C#-Compiler erstellt ein private string name-Feld hinter den Kulissen, 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.

Angenommen, wir möchten eine schreibgeschützte string Description-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;
    }
}
$vbLabelText   $csharpLabel

In diesem Beispiel kann die Description-Eigenschaft nur innerhalb des Konstruktors der Person-Klasse festgelegt 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 unter 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
    }
}
$vbLabelText   $csharpLabel

Im class Program hat die Description-Eigenschaft eine private set, was bedeutet, dass sie von außerhalb der Klasse nicht geändert werden kann, was die Integrität der Daten gewährleistet.

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;
        }
    }
}
$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.

Iron Suite zur Verbesserung Ihrer C#-Entwicklung vorstellen

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");
    }
}
$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 - Optical Character Recognition 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 and Setter: Sie helfen, private Felder einer Klasse zuzugreifen und zu modifizieren.
  2. Auto Properties: Ein eleganter Weg, automatische Getter und Setter mit Hilfe von automatisch implementierten Eigenschaften zu haben.
  3. Access Modifiers: Sie helfen, den Zugriff auf 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 entscheiden, beginnen individuelle Lizenzen bei $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# 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 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 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.

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 Pionierarbeit in der C# PDF-Technologie leistet. Als der ursprüngliche Entwickler hinter der Kern-Codebasis von Iron Software hat er die Produktarchitektur des Unternehmens seit seiner Gründung geprägt und es zusammen mit CEO ...

Weiterlesen

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me