Generic Collection
사용자 정의 클래서 Customer 로 컬렉션 객체를 생성과 동시에 초기화 하는 예제.
컬렉션 객체를 DataGridView 에 출력할 때 ToList 메소드를 사용하지 않아도 된다.
Anonymous Type (역명타입) var
익명 타입은 선언과 동시에 초기화 해줘야 한다. Java 에도 익명 타입이 존재 한다. .NET 의 익명 타입이 Java 의 익명 타입과 다른점은 익명 타입이 처음에 한번 임의 타입으로 결정 되면 더이상 다른 타입으로 변경 불가능 하다.
Func
Func 는 일종의 델리게이트 이다.
델리게이트 처럼 미리 메소드의 시그내처대를 선언해 주지 않아도 된다.
사용자 정의 클래서 Customer 로 컬렉션 객체를 생성과 동시에 초기화 하는 예제.
컬렉션 객체를 DataGridView 에 출력할 때 ToList 메소드를 사용하지 않아도 된다.
// 컬렉션 객체 생성과 동시에 초기화 // - collection initializer 사용 ListmyCustomer = new List () { new Customer() {CustomerName="홍길동", Age = 10, EmailAddress = "se"}, new Customer() {CustomerName="홍길동2", Age = 20, EmailAddress = "se2"}, new Customer() {CustomerName="홍길동3", Age = 30, EmailAddress = "se3"}, new Customer() {CustomerName="홍길동4", Age = 40, EmailAddress = "se4"}, new Customer() {CustomerName="홍길동5", Age = 50, EmailAddress = "se5"}, new Customer() {CustomerName="홍길동6", Age = 60, EmailAddress = "se6"}, new Customer() {CustomerName="홍길동7", Age = 70, EmailAddress = "se7"} }; // 얻은 리스트(컬렉션)를 Grid 에 출력 // - 컬렉션은 ToList()를 사용하지 않아도 된다. dataGridView1.DataSource = myCustomer;
Anonymous Type (역명타입) var
익명 타입은 선언과 동시에 초기화 해줘야 한다. Java 에도 익명 타입이 존재 한다. .NET 의 익명 타입이 Java 의 익명 타입과 다른점은 익명 타입이 처음에 한번 임의 타입으로 결정 되면 더이상 다른 타입으로 변경 불가능 하다.
// anonymouse type : var 는 선언과 동시에 초기화 해야 한다. // java 의 var 와 차이점 // - 한번 선언된 var 는 고정된다. var num = 10; // 예제2 ListmyCustomer = new List () { new Customer() {CustomerName="홍길동", Age = 10, EmailAddress = "se", Title="사원"}, new Customer() {CustomerName="홍길동2", Age = 20, EmailAddress = "se2", Title="사원"}, new Customer() {CustomerName="홍길동3", Age = 30, EmailAddress = "se3", Title="사원"}, new Customer() {CustomerName="홍길동4", Age = 40, EmailAddress = "se4", Title="사원"}, new Customer() {CustomerName="홍길동5", Age = 50, EmailAddress = "se5", Title="사원"}, new Customer() {CustomerName="홍길동6", Age = 60, EmailAddress = "se6", Title="사원"}, new Customer() {CustomerName="홍길동7", Age = 70, EmailAddress = "se7", Title="사원"} }; // c는 컬렉션의 타입에 의존 // C# 3.0 에 추가된 문법은 같이 쓰인다. // - Sum 은 Extention Method int num2 = myCustomer.Sum(c => c.Age); MessageBox.Show(num2.ToString()); // LINQ 의 사용 // in 뒤에는 컬렉션(하나의 타입을 담고 있는)이 온다. 그렇지 않다면 컴파일 에러 // select new 는 특정 컬럼만 빼오는 것 // 필드는 링큐로 받았을 때 표현이 안된다. var query = from cus in myCustomer where cus.Age > 20 // select cus ; select new { cus.CustomerName }; dataGridView1.DataSource = query.ToList();
Func
Func 는 일종의 델리게이트 이다.
델리게이트 처럼 미리 메소드의 시그내처대를 선언해 주지 않아도 된다.
// Func : 델리게이트 이다. private void button3_Click(object sender, EventArgs e) { // 생성 FuncmyF = new Func (MyMehtod); // 호출 int num = myF(10); MessageBox.Show(num.ToString()); // 호출2 // 람다 식은 func 안에서만 사용 가능하다. Func myF2 = new Func (p => p + 1); int num2 = myF2(10); MessageBox.Show(num2.ToString()); } // func로 연결할 메소드 public int MyMehtod(int i) { return i + 100; }