Post
c# 3.0 이후부터 무명 메소드, 람다식, linq 등.. 편리한 기능이 많이 추가되었다.
평소에 쓰던대로 쓰지~하면서 귀찮아서 미루고 있었는데 이번기회에 정리해본다.
1) C#의 var이란?
var은 임시변수로 어떤 타입이라도 될 수 있습니다.(null은 안됨)
그리고 선언과 동시에 초기화 해줘야 합니다.
만약 처음에 string값을 넣었으면 string값만 담을 수 있습니다.
2) 무명 메소드
무명메소드는 임시로 만드는 함수입니다.
함수속에 함수로 만들어지기 때문에 무명 메소드를 참조하기 위해
delegate와 함께 사용됩니다.
3) 람다식
무명 메소드를 간단하게 나타낸 식을 말합니다.
아래와 같이 무명 메소드를 나타냈다면
Func1 = delegate(String s)
{
Console.WriteLine("{0} \n", s);
};
람다식으로 이렇게 바꿀 수 있습니다.
Func1 = (s) => Console.WriteLine("{0} \n", s);
4) LINQ
데이터베이스 처럼 WHERE, FROM 같은 질의를 C# 내 사용할 수 있습니다.
만약 10 아래의 숫자를 찾을 때 linq가 없다면 전체 Link를 한바퀴 돌면서
매번 10보다 아래인지 확인할 것입니다.
여기에 다른 조건이 2,3개 추가되면 if문이 추가 되어 복잡해집니다.
하지만 linq는 WHERE 조건만 넣으면 찾아줘서 매우 편리합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Main3 { class Student { public string name { get; set; } public int grade { get; set; } // 학년 public int gradeClass { get; set; } // 등급 } public partial class Form1 : Form { public Form1() { InitializeComponent(); Student[] StudentList = { new Student() {name = "김학생", grade = 1, gradeClass = 10 }, new Student() {name = "박학생", grade = 1, gradeClass = 52 }, new Student() {name = "천학생", grade = 2, gradeClass = 116 }, new Student() {name = "강학생", grade = 2, gradeClass = 3 }, new Student() {name = "최학생", grade = 2, gradeClass = 73 }, new Student() {name = "이학생", grade = 3, gradeClass = 25 }, }; var student = from st in StudentList where st.grade == 1 && st.gradeClass < 20 orderby st.name ascending select st; foreach (var st in student) Console.WriteLine("이름 : {0} 학년: {1} 등급 : {2} \n", st.name, st.grade, st.gradeClass); } } } | cs |
'이전게시판 > C#' 카테고리의 다른 글
프로퍼티 스택오버플로우.. (0) | 2018.08.10 |
---|---|
StreamReader 한글깨짐 오류 (0) | 2018.08.10 |
배열보다 리스트가 좋은 이유 (0) | 2017.04.30 |