읽기/쓰기 속성 선언 및 사용 방법(C# 프로그래밍 가이드)
속성은 개체 데이터에 대한 액세스가 보호, 제어, 확인되지 않을 위험 없이 공용 데이터 멤버의 편리함을 제공합니다. 속성은 기본 데이터 멤버에서 값을 할당하고 검색하는 특수 메서드인 접근자를 선언합니다. set 접근자를 통해 데이터 멤버를 할당할 수 있으며, get 접근자는 데이터 멤버 값을 검색합니다.
이 샘플에서는 Name
(string) 및 Age
(int)의 두 속성이 있는 Person
클래스를 보여 줍니다. 두 속성 모두 get
및 set
접근자를 제공하므로 읽기/쓰기 속성으로 간주됩니다.
예시
class Person
{
private string _name = "N/A";
private int _age = 0;
// Declare a Name property of type string:
public string Name
{
get
{
return _name;
}
set
{
_name = value;
}
}
// Declare an Age property of type int:
public int Age
{
get
{
return _age;
}
set
{
_age = value;
}
}
public override string ToString()
{
return "Name = " + Name + ", Age = " + Age;
}
}
public class Wrapper
{
private string _name = "N/A";
public string Name
{
get
{
return _name;
}
private set
{
_name = value;
}
}
}
class TestPerson
{
static void Main()
{
// Create a new Person object:
Person person = new Person();
// Print out the name and the age associated with the person:
Console.WriteLine("Person details - {0}", person);
// Set some values on the person object:
person.Name = "Joe";
person.Age = 99;
Console.WriteLine("Person details - {0}", person);
// Increment the Age property:
person.Age += 1;
Console.WriteLine("Person details - {0}", person);
// Keep the console window open in debug mode.
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
/* Output:
Person details - Name = N/A, Age = 0
Person details - Name = Joe, Age = 99
Person details - Name = Joe, Age = 100
*/
강력한 프로그래밍
이전 예제에서 Name
및 Age
속성은 public이며, get
및 set
접근자를 모두 포함합니다. 공용 접근자를 사용하면 모든 개체가 이러한 속성을 읽고 쓸 수 있습니다. 그러나 때로는 접근자 중 하나를 제외하는 것이 좋습니다. 속성을 읽기 전용으로 만들려면 set
접근자를 생략할 수 있습니다.
public string Name
{
get
{
return _name;
}
private set
{
_name = value;
}
}
또는 하나의 접근자를 공개적으로 노출하고 다른 접근자를 private 또는 protected로 설정할 수 있습니다. 자세한 내용은 비대칭 접근자 접근성을 참조하세요.
속성이 선언되면 클래스의 필드로 사용할 수 있습니다. 속성은 다음 문과 같이 속성 값을 가져오고 설정할 때 자연스러운 구문을 허용합니다.
person.Name = "Joe";
person.Age = 99;
속성 set
메서드에서는 특수한 value
변수를 사용할 수 있습니다. 이 변수에는 사용자가 지정한 값이 포함됩니다. 예를 들면 다음과 같습니다.
_name = value;
Person
개체의 Age
속성을 증가하기 위한 정리된 구문은 다음과 같습니다.
person.Age += 1;
개별 set
및 get
메서드를 사용하여 속성을 모델링한 경우 동등한 코드가 다음과 같이 표시될 수 있습니다.
person.SetAge(person.GetAge() + 1);
다음 예제에서는 ToString
메서드가 재정의되었습니다.
public override string ToString()
{
return "Name = " + Name + ", Age = " + Age;
}
ToString
은 프로그램에서 명시적으로 사용되지 않습니다. 기본적으로 WriteLine
호출에 의해 호출됩니다.
참고 항목
.NET
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기