프로퍼티란 무엇인가?
프로퍼티 (속성)
public string Name 과 같은 형태로 메서드와 유사하나 뒤에 ()를 붙이지 않는다.
get 접근자와 set 접근자를 사용한다.
set 접근자의 value는 선언하지 않아도 암묵적으로 컴파일러가 매개 변수로 인식하여 ,
= 할당 연산자를 이용해 데이터를 저장하게 한다.
public으로 만드는 필드와 자동 구현 프로퍼티는 동일하게 public으로 되어 있다.
외부에서 엑세스하는 측면에서는 차이가 없다.
다만, OOP 에서 Encapsulation은 내부 데이타 즉 필드를 외부에 expose 하지 않는다는 원칙이 있는데,
따라서 통상 필드를 public 으로 하지 않으며, 대신 property를 만들어 노출시킨다.
또한 필드 같은 경우는 크게 public 혹은 private으로 아예 허용하거나, 차단하는 반면
자동 구현 프로퍼티 같은 경우는 public int Speed { get; private set; } 과 같이
get만 허용할 수 있다.
using System;
namespace Property
{
class Program
{
static void Main(string[] args)
{
Car car = new Car()
{
Name = "BMW",
Speed = 50
};
car.Name = "H";
Console.WriteLine(car.Name);
Console.WriteLine(car.Speed);
car.Login1();
Console.ReadLine();
}
}
class Car
{
// 일반적인 필드 예
int field;
// 일반적인 프로퍼티 예
private string name;
public string Name {
get { return name; }
set { name = value; }
}
// 자동구현 프로퍼티 예
public int Speed { get; set; }
// 식 본문 멤버 예
public int Filed {
get => field;
set => field = value;
}
public void Login1()
{
// 무명형식 프로퍼티 예 (읽기전용)
var pro = new { Id = "777", Password = "1234" };
Console.WriteLine($"{pro.Id} / {pro.Password}");
}
}
}