C# 예제 공부일기
-
LINQ의 기초C# 예제 공부일기 2020. 7. 28. 19:38
LINQ는 Language-INtegrated Query의 약자로 C#에 통합된 데이터 질의 기능이다. SQL과 같은 Query 언어는 데이터베이스에서 사용되던 언어인데, 이를 C#에 도입한 것이다. LINQ를 사용하면 컬렉션에서 데이터를 다루는 방법이 훨씬 간단해진다. var sortedEven = from item in data where item % 2 ==0 orderby item select item; 위 문장을 보면 from, where, orderby, select 등의 LINQ연산자가 사용되었다. "data 컬렉션에 있는 데이터 item으로부터 짝수인 item을 item값을 기준으로 정렬해서 선택한다. " 는 의미를 가진다. LINQ를 사용하려면 원본 데이터가 IEnumerable이나 IE..
-
List<T> 에서 Predicate<T> 델리게이트 활용C# 예제 공부일기 2020. 7. 28. 19:15
Predicate 델리게이트는 리턴 값이 반드시 bool이고 입력 파라미터가 하나인 델리게이트입니다. Predicate 는 Array나 List클래스의 메소드들에서 자주 사용된다. 예를 들어 List 클래스에서 Predicate를 사용하는 메소드들은 다음과 같다. 리턴 타입 원형 설명 bool List.Exists(Predicate) 조건에 맞는 요소가 있는지 T List.Find(Predicate) 조건에 맞는 첫 번째 요소 리턴 List List.FindAll(Predicate) 조건에 맞는 모든 요소 리턴 T List.FindLast(Predicate) 조건에 맞는 마지막 요소 리턴 int List.RemoveAll(Predicate) 조건에 맞는 요소를 모두 제거 bool List.TrueForA..
-
Predicate<T> 델리게이트C# 예제 공부일기 2020. 7. 28. 18:53
Predicate 는 Func나 Action과 같은 미리 정의된 델리게이트 형식이다. Predicate 델리게이트 메소드는 하나의 매개변수를 갖고 리턴 값이 bool인 델리게이트이다. predicate isEven = IsEven; static bool IsEven(int n) { return n%2==0; } predicate isEven은 매개변수가 정수 하나이고 리턴 값이 bool인 IsEven메소드의 이름을 지정한다. 여기서 Predicate isEven은 소문자로 시작하고 메소드 IsEven은 대문자로 시작하는 것에 주의하자, 따라서 isEven Predicate를 사용해서 IsEven 메소드를 호출할 수 있다. Console.WriteLine(isEven(6)) //결과 : true 여기서 P..
-
람다식(Lambda Expression)C# 예제 공부일기 2020. 7. 22. 20:10
람다식은 익명 메소드를 간단하게 표현할 수 있는 방법이다. 람다식은 개체로 처리되는 코드 블록(식 또는 문 블록)이며 메소드와 같이 매개변수와 리턴 값을 갖는다. 람다식은 인수를 메소드에 전달할 수 있으며 값을 반환할 수 있다. 람다식은 델리게이트로 표현될 수 있는 코드이다. 람다식의 델리게이트형은 리턴 값이나 매개변수 개수에 따라 정해진다. 리턴 값이 없는 람다식은 Action 델리게이트에 해당하고 리턴 값이 있는 람다식은 Func델리게이트에 해당한다. 두개의 파라미터를 갖고 리턴 값이 없는 람다식 Action 델리게이트 한개의 파라미터를 갖고 리턴 값이 하나인 람다식 Func 델리게이트 람다식은 연산자 " => "로 표현된다. 매개변수 => 식, 또는 문장 (리턴 값) 예시) x => x * x : ..
-
Func와 Action으로 델리게이트를 더 간단히 만들기C# 예제 공부일기 2020. 7. 22. 19:44
이제는 델리게이트 선언 부분도 필요가 없다고 한다. //delegate bool MemberTest(int x); 앞에서 배열에서 짝수와 홀수의 개수를 출력하는 프로그램을 무명 델리게이트를 사용하여 작성했는데, 델리게이트를 사용하려면 우선 delegate를 선언해야 하는데 이것도 사실은 번거로운 일이다. .Net에서는 Func와 Action 델리게이트를 미리 만들어서 제공한다. 이 두개를 사용하면 delegate 를 선언할 필요가 없다. Func 델리게이트는 결과를 반환하는 메소드를 참조하기 위해서, Action 델리게이트는 반환 값이 없는 메소드를 참조한다. Func와 Action은 제네릭 매개변수를 사용한다. Func 은 매개변수가 int란 뜻이고 반환타입이 bool이란 뜻이다. 매개변수 리스트 중에..
-
이름 없는 델리게이트(Anonymous Delegate)C# 예제 공부일기 2020. 7. 22. 19:33
앞에서 IsOdd() 와 IsEven() 메소드는 MemberTest의 델리게이트 메소드로 사용되었다. 그런데 이 메소드들은 한번씩만 사용되었기 때문에 굳이 이름을 갖는 메소드로 정의하지 않고 이름 없이 인라인 함수로 만들 수 있다. 이것을 무명 또는 익명 델리게이트라고 한다. class Program { delegate bool MemberTest(int a); static void Main(string[] args) { int[] arr = new int[] { 3, 5, 4, 2, 6, 4, 6, 8, 54, 23, 4, 6, 4 }; Console.WriteLine("짝수의 개수 : " + Count(arr,delegate(int x) { return x % 2 == 0; })); //이름 없이 ..
-
Delegate의 기본, 배열에서 홀수와 짝수 찾기 + Delegate 예제C# 예제 공부일기 2020. 7. 22. 19:23
정수에서 홀수와 짝수의 개수를 출력하는 프로그램이 있다. int[] arr = new int[] {3,5,4,2,6,4,6,8,54,23,4,6,4} Console.WriteLine("짝수의 개수 : " + EvenCount(arr)); Console.WirteLine("홀수의 개수 : " + OddCount(arr)); 짝수의 개수를 리턴하는 EvenCount() 홀수의 개수를 리턴하는 OddCount static int EvenCount(int[] a) { int cnt =0; foreach(var n in a) { if(n%2==0) cnt++; } return cnt; } static int EvenCount(int[] a) { int cnt =0; foreach(var n in a) { if(n..
-
인덱서C# 예제 공부일기 2020. 7. 22. 18:55
인덱서는 인스턴스 내의 데이터에 접근하는 방법입니다. 용도는 속성(Property)과 똑같은데 다른 점은 배열과 같이 인덱스를 사용할 수 있다는 점이다. 인덱서는 this[]를 사용하며 겟터와 셋터를 만든다. 겟터와 셋터에서 클래스의 어떤 값을 가져오고, 어떤 값을 세팅하는지 정해주면 된다. class MyCollection //제네릭 클래스인 MyCollection 정의 { //T형 자료를 100개 저장할수 있는 배열 생성 private T[] array = new T[100]; //인덱서 생성 public T this[int i] { //this 키워드를 사용해서 정수 인덱스 사용 가능하게 한다. get { return array[i]; } set { array[i] = value; } } } cla..