.NETヘルプ C# Getter Setter (開発者向けの仕組み) Curtis Chau 更新日:7月 28, 2025 Download IronPDF NuGet Download テキストの検索と置換 テキストと画像のスタンプ Start Free Trial Copy for LLMs Copy for LLMs Copy page as Markdown for LLMs Open in ChatGPT Ask ChatGPT about this page Open in Gemini Ask Gemini about this page Open in Grok Ask Grok about this page Open in Perplexity Ask Perplexity about this page Share Share on Facebook Share on X (Twitter) Share on LinkedIn Copy URL Email article ゲッターとセッターは、C#のようなオブジェクト指向プログラミング言語における基本的な概念です。 これらの2つのメソッドは、クラスのプロパティのアクセスと変更を制御することを可能にします。 このチュートリアルでは、コードブロックを使用して、C#のゲッターとプライベートセッターの初心者と中級者向けの側面を探ります。 ゲッターとセッターの紹介 ゲッターとセッターとは? 本質的に、ゲッターとセッターは、クラス内のプライベート変数へのアクセスを可能にするメソッドに過ぎません。 ゲッターはプライベートフィールド変数の値を返し、セッターはそれを変更します。 これらのメソッドは、クラスの内部データ(フィールド)が安全に正確にアクセスまたは変更されることを保証します。 なぜ必要ですか? public class Car が private string description プロパティを持っていると想像してください。 このクラスの外部から誰かが説明を知りたい場合、それがプライベートであるため直接アクセスすることはできません。 ここで、ゲッターとセッターの役割が出てきます。 ゲッターはユーザーが private string description の値を取得することを可能にし、直接変更するアクセスを与えることなくそれを行います。 一方で、セッターは、設定した条件に従って説明を変更することをユーザーに許可します。 アクセス修飾子 アクセス修飾子は、クラス外から見たフィールドまたはプロパティの可視性とアクセス性のレベルを定義します。 最も一般的に使用される修飾子は public と private です。 Public: public と宣言されたフィールドまたはプロパティは、プログラムのどこからでもアクセス可能です。 例えば、public int Age プロパティは、コードのどの部分からでもアクセスおよび変更できます。 Private: public で宣言されたプロパティまたはフィールドは、定義されたクラス内部だけでアクセス可能です。例えば 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()); } } 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 上記の class Person では、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 } } 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 Student クラスでは、Name プロパティはゲッターとセッターの両方であり、自動で実装されています。 C# コンパイラは、背景で private string name フィールドを作成し、Name プロパティはそのフィールドへのアクセスを提供します。 プロパティの高度なアクセス修飾子 読み取り専用プロパティ 時には、外部からは変更できないが読み取れるプロパティを提供したいと思うことがあるかもしれません。 ここで読み取り専用プロパティが便利になります。 プロパティ内のセッターを省略することで、それを読み取り専用にすることができます。 Person クラスに読み取り専用の string 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 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 この例では、Description プロパティは、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 } } 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 class Program 内では、Description プロパティには 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 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 この例では、Student クラスは Person から継承し、Name プロパティのセッターをオーバーライドします。 名前を設定する前に妥当性チェックを追加し、それが空でないかまたはnullでないことを確認します。 Iron Suiteを使ったC#開発の強化 Iron Suiteは、C#の開発能力を大幅に高める研究開発ツールのコレクションです。 それには、IronPDF、IronXL、IronOCR、IronBarcodeが含まれています。 これらの各ツールは、独自の目的を持ち、C#のさまざまな側面に統合できます。 IronPDF - 強力なPDF管理ツール IronPDFについて詳しくはこちら C#でPDF文書を作成、読み取り、編集できるライブラリです。 HTMLをPDFに変換するか、ゲッターやセッターを通じてPDFメタデータを管理するかにかかわらず、IronPDFはあなたをサポートします。 IronPDFはHTMLからPDFへの変換に優れ、元のレイアウトとスタイルを正確に保存します。 レポート、請求書、ドキュメンテーションなどのウェブベースのコンテンツからの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"); } } 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操作を簡単に Excelファイルを扱う際、IronXL Excelライブラリは読み書きプロセスを簡素化します。 このツールは、同じ構文を使用してC#のゲッターとセッターを用いてデータを処理するように、Excelファイルのプライベートおよびパブリックな文字列または整数を操作するために使用できます。 IronOCR - C#での光学文字認識 IronOCRを探る、画像を検索可能なテキストに変換する光学文字認識ライブラリです。 あなたのアプリケーションにスキャンされた文書からテキストを読み取る必要がある場合、IronOCRの強力な機能を簡単に統合できます。 それは、クラスPersonまたはクラスStudentの前述の設定から期待するように、プライベートフィールドとパブリック文字列説明を処理できます。 IronBarcode - バーコードの読み取りと書き込みライブラリ IronBarcodeの機能を発見 バーコードの読み取りと書き込みを必要とするアプリケーションのために。 それは、C#プログラミングで使用されるゲッターとセッターのように、自動プロパティを通じてカスタマイズまたはバーコードデータへの直接アクセスを許可します。 Iron Suiteとゲッターとセッター Iron Suiteパッケージは、ゲッターとセッターを含むC#開発にシームレスに統合されます。 これらのツールは、どのC#プロジェクトにも価値を追加します。 結論 要約すると: ゲッターとセッター: それらは、クラスのプライベートフィールドにアクセスし、変更するのを助けます。 自動プロパティ: 自動実装プロパティのおかげで、ゲッターとセッターを自動的に持つエレガントな方法。 アクセス修飾子: それらはプロパティのアクセス性を微調整するのに役立ちます。 今や、C#でゲッターとセッターを使用する方法についてしっかりとした理解を得ているはずです。 Iron Suiteのツール群は、C#開発者に素晴らしい機能性を提供します。 これらの製品の各々、ならびにIronPDF、IronXL、IronOCR、IronBarcodeは、Iron Softwareツールの無料トライアルを提供し、最初の投資なしでこれらの強力なライブラリをあなたのプロジェクトに探求し、統合することができます。 用意ができたら、個別のライセンスは$799から始まります。 このツールのうち、あなたのニーズに合うものが2つ以上見つかった場合、2つの個別ライセンスの価格で完全なIron Suiteパッケージを購入する機会を活用できます。 よくある質問 C# のゲッターとセッターの目的は何ですか? C# のゲッターとセッターは、クラスのプライベートプロパティへのアクセスを制御するために使用されます。ゲッターはプロパティの値を取得し、セッターはプロパティを変更可能にします。このカプセル化は、クラスのデータへの安全で制御されたアクセスを保証します。 C# ではアクセス修飾子がプロパティの可視性にどのように影響しますか? C# での public や private などのアクセス修飾子は、クラスのプロパティの可視性とアクセス可能性を決定します。Public プロパティはどこからでもアクセス可能ですが、private プロパティは宣言されているクラス内に限定されます。 C# の自動実装プロパティとは何ですか? 自動実装プロパティは、C# でプロパティを宣言するための省略記法を提供します。別個のフィールド、ゲッター、セッターを明示的に書くことなくプロパティを定義できます。コンパイラは自動的にバックフィールドを作成します。 C# で読み取り専用のプロパティを作るにはどうしますか? C# では、プロパティ宣言でセッターを省略することで読み取り専用のプロパティを作成できます。これにより、プロパティはクラス内でのみ(例えばコンストラクタ内などで)設定可能で、外部からは変更不可能です。 C# でプライベートセッターをどのように使用しますか? C# のプライベートセッターは、宣言されたクラス内でのみプロパティを変更可能にし、外部コードにはプロパティの読み取りを許可します。これは、データの整合性を維持しながら制御されたアクセスを提供するのに役立ちます。 C# では派生クラスでプロパティの動作をオーバーライドできますか? はい、C# では基本クラスでプロパティを virtual としてマークし、派生クラスで override キーワードを使用することでプロパティの動作をオーバーライドできます。これにより、ゲッターおよびセッターの動作をカスタマイズできます。 C#でHTMLをPDFに変換する方法は? IronPDF の RenderHtmlAsPdf メソッドを使用して、HTML 文字列を PDF に変換できます。RenderHtmlFileAsPdf を使用して HTML ファイルを PDF に変換することもできます。 PDF およびバーコード機能で C# 開発を向上させるためのツールは何ですか? Iron Suite には、IronPDF や IronBarcode などのツールが含まれており、PDF 管理やバーコードの読み書きなどの機能を提供します。これらのツールは C# プロジェクトとシームレスに統合されます。 Iron Suite は C# 開発者にとってどのように有益ですか? Iron Suite は、C# プロジェクトとシームレスに統合される強力なツールの範囲を提供するため、C# 開発者にとって有益です。これらのツールは、PDF 管理、Excel 操作、OCR 機能、バーコードの読み書きなど、さまざまな機能を提供します。 Curtis Chau 今すぐエンジニアリングチームとチャット テクニカルライター Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。 関連する記事 更新日 9月 4, 2025 RandomNumberGenerator C# RandomNumberGenerator C#クラスを使用すると、PDF生成および編集プロジェクトを次のレベルに引き上げることができます 詳しく読む 更新日 9月 4, 2025 C# String Equals(開発者向けの仕組み) 強力なPDFライブラリであるIronPDFと組み合わせることで、switchパターンマッチングは、ドキュメント処理のためのよりスマートでクリーンなロジックを構築できます 詳しく読む 更新日 8月 5, 2025 C# Switch Pattern Matching(開発者向けの仕組み) 強力なPDFライブラリであるIronPDFと組み合わせることで、switchパターンマッチングは、ドキュメント処理のためのよりスマートでクリーンなロジックを構築できます 詳しく読む C# Logical Operators (開発者向けの仕組み)C# Split String (開発者向けの...
更新日 9月 4, 2025 RandomNumberGenerator C# RandomNumberGenerator C#クラスを使用すると、PDF生成および編集プロジェクトを次のレベルに引き上げることができます 詳しく読む
更新日 9月 4, 2025 C# String Equals(開発者向けの仕組み) 強力なPDFライブラリであるIronPDFと組み合わせることで、switchパターンマッチングは、ドキュメント処理のためのよりスマートでクリーンなロジックを構築できます 詳しく読む
更新日 8月 5, 2025 C# Switch Pattern Matching(開発者向けの仕組み) 強力なPDFライブラリであるIronPDFと組み合わせることで、switchパターンマッチングは、ドキュメント処理のためのよりスマートでクリーンなロジックを構築できます 詳しく読む