본문 바로가기

전체 글

(195)
[ 이것이 C#이다 ] Chapter 15 . LINQ [ 학습 흐름 ] LINQ의 기본 from where order By select 여러개의 데이터 원본에 질의하기 group by로 데이터 분류하기 내부 조인 외부 조인 LINQ의 비밀과 LINQ 표준 연산자 [ 데이터! ] [ LINQ ] - LINQ는 Language INtegrated Query (통합 언어 퀴리)로 C#의 통합된 데이터 질의 기능을 말한다 . - 데이터 질의는 데이터에 대해 물어본다는 말 . 기본적으로 질의는 다음 내용을 포함한다 . - From : 어떤 데이터 집합에서 찾을 것인가? - Where : 어떤 값의 데이터를 찾을 것인가? - Select : 어떤 항목을 추출할 것인가? [ 예시 ] class Profile { public string Name{get;set;} pub..
[ 이것이 C#이다 ] Chapter 14 . 람다식 [ 학습 흐름 ] 람다식 문 형식의 람다식 Func와 Action으로 더 간편하게 무명함수 만들기 Func 대리자 Action 대리자 식으로 이루어지는 멤버 [ 람다식의 기원 ] [ 람다식 ] - 람다식은 알론조 처지의 람다 계산법에서 사용하는 식이다 . - 함수의 정의 / 변수 / 함수의 적용으로 이루어져 있는데 모든 것이 함수로 이루어져 있다 . - 람다 계산법에서는 모든 것이 함수로 이루어져 있다 . [ 람다식 ] [ 람다식 ] - 람다식은 익명 메소드를 만들기 위해 사용한다 . - 람다식으로 만드는 익명 메소드는 무명 함수라는 이름으로 부른다 . delegate int Calculate(int a,int b); //익명 메소드를 만들기 위한 대리자 static void Main(string[]ar..
[ 이것이 C#이다 ] Chapter 13 . 대리자와 이벤트 [ 학습 흐름 ] 대리자 일반화 대리자 대리자 체인 익명 메소드 대리자와 이벤트 [ 대리자란 ] [ 콜백 ] - 어떤 일을 수행하는 코드 . - 콜백은 다른 코드에 맡겨져 실행된다 . - 콜백을 맡아줄 코드는 컴파일 시점이 아닌 프로그램 실행중 결정된다 . [ 대리자 ] - 콜백을 맡아 실행하는 일을 대리자가 담당한다 . - 대리자는 메소드에 대한 참조이다 . - 대리자에 메소드의 주소를 할당 , 대리자를 호출하면 대리자가 해당 메소드를 호출한다 . 한정자 delegate 반환형식 대리자이름 (매개변수 목록); - 대리자는 메소드에 대한 참조이기에 자신이 참조할 메소드의 반환형식과 매개변수를 명시해야 한다 . - 대리자는 인스턴스가 아닌 형식이다 . [ 콜백 구현 하기 ] private delegate ..
[ 이것이 C#이다 ] Chapter 12 . 예외처리 [ 학습 흐름 ] 예외에 대하여 try ~ catch로 예외 받기 System.Exception 클래스 예외 던지기 try ~ catch 와 finally 사용자 정의 예외 클래스 만들기 예외 필터하기 예외 처리 다시 생각해보기 [ 예외에 대하여 ] [ 예외 ] - 프로그래머가 생각한 시나리오에서 벗어나는 사건 [ 예외 처리 ] - 예외가 프로그램의 오류나 다운으로 이어지지 않도록 적절하게 처리하는 것 using System; using System.Collections; using System.Collections.Generic; namespace KillingProgram; class MainApp { static void Main(string[] args) { int[] arr = { 1, 2, 3..
[ 이것이 C#이다 ] Chapter 11 . 일반화 프로그래밍 [ 학습 흐름 ] [ 학습 흐름 ] 일반화 프로그래밍 일반화 메소드 일반화 클래스 형식 매개변수 제약시키기 일반화 컬렉션 foreach를 사용할 수 있는 일반화 클래스 [ 일반화 프로그래밍 ] [ 일반화 ] - 특수한 개념으로 공통된 개념을 찾아 묶는것을 일반화라고 한다 ex) 포유류 - 일반화 프로그래밍은 일반화 하는 대상이 데이터 형식이다 . - 매개변수의 형식만 다를 뿐, 내부 논리는 똑같은 코드를 일반화 할 수 있다면 여러 버전의 오버로딩이 필요 없다 . [ 일반화 메소드 ] [ 일반화 메소드 ] void CoptyArray (T[]Source , T[]Target) { for(int i=0;i= array.Length) { Array.Resize(ref array, index + 1); Cons..
[ 이것이 C#이다 ] Chapter 10 . 배열과 컬렉션 그리고 인덱서 [ 학습 흐름 ] [ 학습 흐름 ] 배열의 초기화 System.Array 2차원 배열 다차원 배열 가변 배열 컬렉션 인덱서 [ All For one,one for all ] [ 배열 ] //데이터 형식 [] 배열이름 = new 데이터형식[용량]; int[] scores = new int[5]; - 배열은 데이터를 담는 상자이다 . 필요한 용량을 가진 배열을 만든 다음 데이터를 넣을 수 있다. int[]scores = new int[5]; scores[0]=80; - 배열의 각 요소에 데이터를 저장할때는 배열이름 뒤에 대괄호를 붙이고 인덱스를 적어준다 . - 인덱스는 0 부터 시작한다. using System; namespace ArraySample; class MainApp { static void Ma..
[ 이것이 C#이다 ] Chapter 09 . 프로퍼티 [ 학습 흐름 ] [ 학습 흐름 ] public 필드 프로퍼티 생성자 무명 형식 인터페이스의 프로퍼티 추상 클래스의 프로퍼티 [ public필드의 유혹 ] [ public ] class MyClass { private int myField; public int GetMyField(){return myField;} public void SetMyField(int MyValue){myField = newValue;} } MyClass obj = new MyClass(); obj.SetMyField(3); Console.WriteLine(obj.GetMyField()); - 필드를 public으로 선언하고 , Get/Set 메서드 대신 = 연산자로 필드를 읽거나 할당하는 것은 편하지만 은닉성을 해친다 . - ..
[ 이것이 C#이다 ] Chapter 08 . 인터페이스와 추상 클래스 [ 학습 흐름 ] [ 학습 흐름 ] 인터페이스의 선언 인터페이스를 상속하는 인터페이스 여러 인터페이스 . 한꺼번에 상속하기 추상 클래스 [ 인터페이스의 선언 ] [ 인터페이스 ] interface 인터페이스_이름 { 반환형식 메소드이름1(매개변수 목록); 반환형식 메소드이름2(매개변수 목록); 반환형식 메소드이름3(매개변수 목록); 반환형식 메소드이름4(매개변수 목록); } - 클래스와 비슷하지만 메소드,이벤트,인덱서,프로퍼티만을 가질 수 있다 . 그 마저도 구현부가 없다 . - 인터페이스는 접근 제한자를 사용 할 수 없고 모든것이 public 으로 선언된다 . - 인스턴스도 만들 수 없다 . [ 인터페이스를 상속받는 클래스 ] class ConsoleLogger:ILogger { public void ..