
C# Getter Setter (開発者向けの仕組み)
ゲッターとセッターは、C#のようなオブジェクト指向プログラミング言語における基本的な概念です。 これらの2つのメソッドは、クラスのプロパティのアクセスと変更を制御することを可能にします。 このチュートリアルでは、コードブロックを使用して、C#のゲッターとプライベートセッターの初心者と中級者向けの側面を探ります。
ゲッターとセッターの紹介
ゲッターとセッターとは?
本質的に、ゲッターとセッターは、クラス内のプライベート変数へのアクセスを可能にするメソッドに過ぎません。 ゲッターはプライベートフィールド変数の値を返し、セッターはそれを変更します。 これらのメソッドは、クラスの内部データ(フィールド)が安全に正確にアクセスまたは変更されることを保証します。
なぜ必要ですか?
特定のプロパティ public class Carを持つことを想像してみてください。 このクラスの外部から誰かが説明を知りたい場合、それがプライベートであるため直接アクセスすることはできません。 ここで、ゲッターとセッターの役割が出てきます。
ゲッターは、ユーザーが直接変更せずにprivate string descriptionの値を取得できるようにします。 一方で、セッターは、設定した条件に従って説明を変更することをユーザーに許可します。
アクセス修飾子
アクセス修飾子は、クラス外から見たフィールドまたはプロパティの可視性とアクセス性のレベルを定義します。 最もよく使用される修飾子はprivateです。
Public:publicとして宣言されたフィールドやプロパティは、プログラムのどこからでもアクセスできます。 たとえば、プログラムのどの部分からでもアクセスおよび変更できるpublic int Ageプロパティを持つことができます。Private:private int ageがあります。 このカプセル化により、不正な変更を防ぎ、クラスの内部状態が適切に維持されるようにします。
シンプルなゲッターとセッター
簡単な例を始めましょう。
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
Module Program
Sub Main()
Dim person As New Person()
person.SetName("John")
Console.WriteLine(person.GetName())
End Sub
End Module上記のnameプロパティに対するゲッター(GetName)とセッター(SetName)の両方を持っています。 このstatic void Mainメソッドを実行すると、セッターで名前に設定した値"John"が出力されます。
自動実装プロパティ
今、あなたは"ゲッターとセッターのために常に別々のメソッドを書く必要があるのか?"と考えるかもしれません。その答えは"いいえ"です。C#はこれを簡素化するために"自動実装プロパティ"または"自動プロパティ"と呼ばれる概念を導入しました。
C#では、オートマチックプロパティを使用してprivate fieldや関連するプロパティを宣言する省略形を利用できます。 以下は例です:
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 ClassNameプロパティはゲッターとセッターの両方であり、自動実装されています。 C#コンパイラーは、バックグラウンドでprivate string nameフィールドを作成し、Nameプロパティはそのフィールドへのアクセスを提供します。
プロパティの高度なアクセス修飾子
読み取り専用プロパティ
時には、外部からは変更できないが読み取れるプロパティを提供したいと思うことがあるかもしれません。 ここで読み取り専用プロパティが便利になります。 プロパティ内のセッターを省略することで、それを読み取り専用にすることができます。
読み取り専用の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 Property Name As String
Public ReadOnly Property Description As String
Public Sub New(name As String, description As String)
Me.Name = name
Me.Description = description
End Sub
End Classこの例では、Personクラスのコンストラクター内でのみ設定できます。 一度設定すると、外部から変更することはできません。
プライベートセッター
時には、クラスの外部からプロパティを読み取れるようにしたいが、クラス内からのみ設定したいこともあります。 これは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
}
}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このprivate setがあり、クラス外部から変更することができないため、データの完全性を確保できます。
継承とオーバーライド
派生クラスと作業する場合、ゲッターおよびセッターメソッドをオーバーライドしてその挙動をカスタマイズすることができます。 これにより、値を取得または設定するときに追加のロジックを追加することができます。
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この例では、Nameプロパティのセッターをオーバーライドします。 名前を設定する前に妥当性チェックを追加し、それが空でないかまたはnullでないことを確認します。
C# 開発を強化するための Iron Suite の紹介
Iron Suiteは、C#の開発能力を大幅に高める研究開発ツールのコレクションです。 それには、IronPDF、IronXL、IronOCR、IronBarcodeが含まれています。 これらの各ツールは、独自の目的を持ち、C#のさまざまな側面に統合できます。
IronPDF - 強力なPDF管理ツール
IronPDFについて詳しくはこちら C#でPDF文書を作成、読み取り、編集できるライブラリです。 HTMLをPDFに変換するか、ゲッターやセッターを通じてPDFメタデータを管理するかにかかわらず、IronPDFはあなたをサポートします。
IronPDF は HTML から PDF への変換に秀でており、元のレイアウトとスタイルを正確に保存します。 これは、レポート、請求書、ドキュメントなどの Web ベースのコンテンツから PDF を作成するのに最適です。 HTML ファイル、URL、または生の HTML 文字列のサポートにより、IronPDF は高品質な 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 ClassIronXL - Excel操作を簡単に
Excelファイルを扱う際、IronXL Excelライブラリは読み書きプロセスを簡素化します。 このツールは、同じ構文を使用してC#のゲッターとセッターを用いてデータを処理するように、Excelファイルのプライベートおよびパブリックな文字列または整数を操作するために使用できます。
IronOCR - Optical Character Recognition in C#
IronOCRを探る、画像を検索可能なテキストに変換する光学文字認識ライブラリです。 あなたのアプリケーションにスキャンされた文書からテキストを読み取る必要がある場合、IronOCRの強力な機能を簡単に統合できます。 それは、クラスPersonまたはクラスStudentの前述の設定から期待するように、プライベートフィールドとパブリック文字列説明を処理できます。
IronBarcode - バーコードの読み取りと書き込みライブラリ
IronBarcodeの機能を発見 バーコードの読み取りと書き込みを必要とするアプリケーションのために。 それは、C#プログラミングで使用されるゲッターとセッターのように、自動プロパティを通じてカスタマイズまたはバーコードデータへの直接アクセスを許可します。
Iron Suiteとゲッターとセッター
Iron Suiteパッケージは、ゲッターとセッターを含むC#開発にシームレスに統合されます。 これらのツールは、どのC#プロジェクトにも価値を追加します。
結論
要約すると:
Getter and Setter: クラスのプライベートフィールドへのアクセスと変更を支援します。Auto Properties: 自動実装プロパティを利用して自動ゲッターとセッターを持つエレガントな方法。Access Modifiers: プロパティのアクセス性を微調整するのに役立ちます。
今や、C#でゲッターとセッターを使用する方法についてしっかりとした理解を得ているはずです。
Iron Suiteのツール群は、C#開発者に素晴らしい機能性を提供します。 これらの製品の各々、ならびにIronPDF、IronXL、IronOCR、IronBarcodeは、Iron Softwareツールの無料トライアルを提供し、最初の投資なしでこれらの強力なライブラリをあなたのプロジェクトに探求し、統合することができます。
コミットする準備ができたら、個々のライセンスは$999から始まります。 このツールのうち、あなたのニーズに合うものが2つ以上見つかった場合、2つの個別ライセンスの価格で完全なIron Suiteパッケージを購入する機会を活用できます。

ジェイコブ・メラーはIron Softwareの最高技術責任者(CTO)であり、C# PDFテクノロジーを開拓する先見的なエンジニアです。Iron Softwareのコアコードベースを支えるオリジナル開発者として、彼は創業以来、会社の製品アーキテクチャを形成し、CEOのCameron Rimingtonとともに、会社をNASA、Tesla、および世界的な政府機関にサービスを提供する50人以上の会社に変えました。1999年にロンドンで最初のソフトウェアビジネスを開業し、2005年に最初 for .NETコンポーネントを作成した後、Microsoftのエコシステム全体で複雑な問題を解決することを専門としました。
関連する記事


