* 프로퍼티
// 프로퍼티의 핵심은 GET 접근자와 SET 접근자이다.
class abc{
private int a;
public getmy(){
return a;
}
public setmy(int a){
this.a = a;
}
// 위는 보통 클래스에서 읽기와 쓰기의 형태이다.
* 프로퍼티 기본형
class Program
{
public int my // 프로퍼티
{
get
{
return abc;
}
set
{
abc = value; // value는 파라미터로 넘어온 값
}
}
static void Main(string[] args)
{
Program a = new Program();
a.abc = 10;
Console.Write(a.abc);
}
}
// 프로퍼티는 이거로 모든게 설명된다.
// get은 출력, set은 입력, a.abc = 10은 set, a.abc는 get
// 꼭 set과 get 둘 다 써줄 필요는 없다.
* 자동 구현 프로퍼티
class Program
{
private int abc;
public int my // 프로퍼티
{
get;
set;
}
static void Main(string[] args)
{
Program a = new Program();
a.my = 10;
Console.Write(a.my);
}
}
// 위의 프로퍼티를 더 간단하게 만드는 것이다.
// 값을 변수에 저장하는 형태에서 프로퍼티가 아예 변수가 되어버렸다.
* 프로퍼티 + 초기화
class Program
{
public int my
{
get;
set;
}
static void Main(string[] args)
{
Program a = new Program()
{
my = 10 // 곧바로 초기화함
};
Console.Write(a.abc);
}
}
// 초기화를 거치며 더욱 간단해졌다.
* 무명형식
class Program
{
static void Main(string[] args)
{
var a = new { name = "ㅇㅇ", kk = 18 };
Console.WriteLine("{0} {1}", a.name, a.kk);
}
}
// var 형태의 프로퍼티이다. get set도 필요없다..
// 값을 바꿀수 없고 쓸모없어 보이긴하는데 LINQ에선 쓸모있다고 한다.
* 인터페이스 + 프로퍼티
interface INamedValue
{
string Name
{
get;
set;
}
string Value
{
get;
set;
}
}
class NamedValue : INamedValue
{
public string Name
{
get;
set;
}
public string Value
{
get;
set;
}
}
class MainApp
{
static void Main(string[] args)
{
NamedValue name = new NamedValue()
{
Name = "이름",
Value = "박상현"
};
NamedValue height = new NamedValue()
{
Name = "키",
Value = "177Cm"
};
NamedValue weight = new NamedValue()
{
Name = "몸무게",
Value = "90Kg"
};
Console.WriteLine("{0} : {1}", name.Name, name.Value);
Console.WriteLine("{0} : {1}", height.Name, height.Value);
Console.WriteLine("{0} : {1}", weight.Name, weight.Value);
}
}
// 인터페이스에 프로퍼티를 넣고 초기화한 형태이다.
// 과연 인터페이스에 프로퍼티를 담을 필요가 있나싶다..