C#프로퍼티,읽기전용속성예제(닷넷,Property)

홈 > 공유팁! > 프로그램 관련
프로그램 관련

C#프로퍼티,읽기전용속성예제(닷넷,Property)

꽁스짱 0 895

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();
    }
}

/*
[결과]
홍길동, 서울 구로구
박길동, 서울 강남구
이길동, 서울 양천구
홍길동, 서울 구로구
박길동, 서울 강남구
이길동, 서울 양천구
*/

 
0 Comments
제목