
C# Getter Setter (개발자용 작동 방식)
Getter와 Setter는 C#과 같은 객체 지향 프로그래밍 언어의 필수 개념입니다. 이 두 메소드는 클래스 프로퍼티의 접근 및 수정을 제어할 수 있게 해줍니다. 이 튜토리얼에서는 코드 블록을 사용하여 C# getter와 private setter의 초급 및 중급 측면을 탐구할 것입니다.
Getter와 Setter 소개
Getter와 Setter란 무엇입니까?
기본적으로 getter와 setter는 클래스 내의 비공개 변수를 접근할 수 있게 하는 메소드에 불과합니다. getter는 비공개 필드 변수의 값을 반환하고, setter는 이를 수정합니다. 이 메소드는 클래스의 내부 데이터(필드)가 안전하고 올바르게 접근되거나 수정되도록 보장합니다.
왜 필요할까요?
프로그램에서 어디서든지 접근할 수 있는 public class Car 속성을 가진 private string description가 있다고 상상해보세요. 이 클래스 외부의 누군가가 설명을 알고 싶어도 비공개이므로 직접 접근할 수 없습니다. 여기서 getter와 setter의 역할이 등장합니다.
게터를 사용하면 사용자가 private string description의 값을 직접 수정하지 않고도 가져올 수 있습니다. 반면에, setter는 우리가 설정한 조건에 따라 사용자가 설명을 수정할 수 있게 해줍니다.
접근 한정자
접근 한정자는 클래스 외부에서 필드나 프로퍼티의 가시성과 접근 수준을 정의합니다. 가장 일반적으로 사용되는 수정자는 public와 private입니다.
Public:public로 선언된 필드나 속성은 프로그램의 어느 곳에서든지 접근할 수 있습니다. 예를 들어public int Age속성이 있으며, 코드의 어느 부분에서든지 접근하고 수정할 수 있습니다.Private:private로 선언된 속성이나 필드는 정의된 클래스 내에서만 접근할 수 있습니다. 예를 들어private int age. 이 캡슐화는 불법적인 수정을 방지하고 클래스의 내부 상태가 올바르게 유지되도록 도와줍니다.
간단한 Getter와 Setter
간단한 예시로 시작해 봅시다.
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위의 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
}
}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 ClassStudent 클래스에서는 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 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이 예에서는 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
}
}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 Classclass 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 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이 예시에서 Student 클래스는 Person로부터 상속받고 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로 변환하는 데 탁월합니다. 보고서, 송장 및 설명서와 같은 웹 기반 콘텐츠에서 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 조작
IronXL Excel 라이브러리는 Excel 파일의 읽기 및 쓰기 과정을 간소화합니다. 이 도구는 Excel 파일의 개인 및 공용 문자열 또는 정수를 조작하는 데 사용될 수 있으며, 이는 C#에서 게터와 세터를 사용하여 클래스를 다루는 방식과 유사합니다.
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에서 시작합니다. 이들 도구 중 하나 이상의 도구가 귀하의 필요에 맞다면, 개별 라이선스 둘의 가격으로 전체 Iron Suite 패키지를 구매할 기회를 놓치지 마십시오.

제이콥 멜러는 Iron Software의 최고 기술 책임자(CTO)이자 C# PDF 기술을 개척한 선구적인 엔지니어입니다. Iron Software의 핵심 코드베이스를 최초로 개발한 그는 창립 초기부터 회사의 제품 아키텍처를 설계해 왔으며, CEO인 캐머런 리밍턴과 함께 회사를 NASA, 테슬라, 그리고 전 세계 정부 기관에 서비스를 제공하는 50명 이상의 직원을 보유한 기업으로 성장시켰습니다.
관련 기사


