C#프로퍼티,읽기전용속성예제(닷넷,Property)
꽁스짱
C#
0
1325
2021.02.15 23:00
C#프로퍼티,읽기전용속성예제(닷넷,Property)
using System;
using System.Linq;
class Emp
{
// Read-only properties.
public string Name { get; private set; }
public string Addr { get; private set; }
// Public constructor.
public Emp(string Name, string Addr)
{
this.Name = Name;
this.Addr = Addr;
}
}
public class Emp2
{
// Read-only properties.
public string Name { get; private set; }
public string Addr { get; private set; }
// Private constructor.
private Emp2(string Name, string Addr)
{
this.Name = Name;
this.Addr = Addr;
}
// Public factory method.
public static Emp2 CreateEmp2(string Name, string Addr)
{
return new Emp2(Name, Addr);
}
}
public class Program
{
static void Main()
{
string[] name = { "홍길동", "박길동", "이길동" };
string[] addr = { "서울 구로구", "서울 강남구", "서울 양천구" };
// 아래 Enumerable.Range 메소드는 정수시퀀스를 생성(0에서부터 3개)
var query1 = from i in Enumerable.Range(0, 3)
select new Emp(name[i], addr[i]);
// 링크쿼리식을 List형태로 변환 후 출력
var list = query1.ToList();
foreach (var emp in list)
{
Console.WriteLine("{0}, {1}", emp.Name, emp.Addr);
}
// 아래 Enumerable.Range 메소드는 정수시퀀스를 생성(0에서부터 3개)
var query2 = from i in Enumerable.Range(0, 3)
select Emp2.CreateEmp2(name[i], addr[i]);
// 링크쿼리식을 List형태로 변환 후 출력
var list2 = query2.ToList();
foreach (var emp in list2)
{
Console.WriteLine("{0}, {1}", emp.Name, emp.Addr);
}
// 아래코드처럼 수정은 불가능 하다. (set이 private으로 구현)
// emp.Name = "오라클자바커뮤니티";
// Keep the console open in debug mode.
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
/*
[결과]
홍길동, 서울 구로구
박길동, 서울 강남구
이길동, 서울 양천구
홍길동, 서울 구로구
박길동, 서울 강남구
이길동, 서울 양천구
*/