본문 바로가기

C#/이것이 C#이다

(20)
[ 이것이 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 ..
[ 이것이 C#이다 ] Chapter 07 . 클래스 [ 학습 흐름 ] [ 학습 흐름 ] 객체지향 프로그래밍과 클래스 클래스의 선언과 객체의 생성 정적 필드와 메소드 객체 복사하기 this 키워드 접근 한정자로 공개 수준 결정하기 상속으로 코드 재활용하기 기반 클래스와 파생 클래스 사이의 형식 반환 오버라이딩과 다형성 메소드 숨기기 오버라이딩 봉인하기 중첩 클래스와 분할 클래스 확장 메소드 구조체 [ 객체지향 프로그래밍과 클래스 ] [ 객체 지향 프로그래밍 ] 객체 지향 프로그래밍 - 코드 내 모든것을 객체로 표현하려는 프로그래밍 패러다임 . - OOP (Object Oriented Programming )이라고도 함. 객체 - 세상의 모든것을 지칭 - 객체는 속성과 기능 두가지 특징이 있다 . - C#코드에서는 속성은 데이터 , 기능은 메소드로 표현한다 ..
[ 이것이 C#이다 ] Chapter 06 . 메소드로 코드 간추리기 [ 학습 흐름 ] [ 학습 흐름 ] 메소드 알아보기 return 매개변수와 인자 참조에 의한 매개변수 전달 출력 전용 매개변수 메소드 오버로딩 가변 개수의 인수 명명된 인수 선택적 인수 [ 메소드란 ] [ 메소드 ] 메소드 - 일련의 코드를 하나로 묶은 것 . C/C++에서는 함수 / 파스칼에서는 프로시저 - 메소드가 함수 , 프로시저 , 서브루틴과 다른점은 클래스 내부에 존재한다는 점 . class 클래스 이름 { [한정자] [반환현식] [메소드 이름] ( 매개변수 목록 ) { //실행 코드 //실행 코드 return 메소드 결과; } } 매개 변수와 반환 형식 - 매개변수는 제품을 만들기 위해 기계(메서드)에 넣는 재료 - 매서드의 반환형식은 제품의 규격 메소드의 호출 과정 - 호출자가 메소드를 호출..
[ 이것이 C#이다 ] Chapter 05 . 코드의 흐름 제어하기 [ 학습 흐름 ] [ 학습 흐름] 분기문 if , else 그리고 else if if 문 중첩해서 사용하기 switch 반복문 while do while for 중첩 for foreach for 또는 while을 이용한 무한 반복 코드 점프문 continue goto return 과 throw [ 분기문 ] [ 분기문 ] - 프로그램의 흐름을 조건에 따라 여러 갈래로 나누는 흐름 제어 구문 . - if문 switch문 두 종류가 있다 . [ if , else , else if ] - 한번에 단 하나의 조건을 평가한다 . using System; namespace AssignmentOperator; class MainApp { //프로그램 실행이 시작되는 곳 static void Main(string[] ..