속성은 개체의 데이터에 대한 보호되지 않고, 제어되지 않고, 확인되지 않은 액세스와 함께 발생하는 위험 없이 공용 데이터 멤버의 편의를 제공합니다. 속성 은 접근자를 선언합니다. 기본 데이터 멤버에서 값을 할당하고 검색하는 특수 메서드입니다. set 접근자를 사용하면 데이터 멤버를 할당할 수 있고 get 접근자는 데이터 멤버 값을 검색합니다.
이 샘플에서는 Person
(문자열) 및 Name
(int)의 두 가지 속성이 있는 Age
클래스를 보여 줍니다. 두 속성 모두 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 - {person}");
// Set some values on the person object:
person.Name = "Joe";
person.Age = 99;
Console.WriteLine($"Person details - {person}");
// Increment the Age property:
person.Age += 1;
Console.WriteLine($"Person details - {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;
}
}
또는 한 접근자를 공개적으로 노출하지만 다른 접근자를 비공개로 만들거나 보호할 수 있습니다. 자세한 내용은 비대칭 접근자 접근성을 참조하세요.
속성이 선언되면 클래스의 필드로 사용할 수 있습니다. 속성은 다음 문과 같이 속성 값을 가져오고 설정할 때 자연 구문을 허용합니다.
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