[C#] IEnumerable Interface 열거자 인터페이스 C#은 다중상속이 문법적으로 불가능한 개발언어입니다. 그대신 인터페이스가 존재하며 인터페이스를 통한 간접적인 다중 상속이 가능합니다. 그 중에서 IEnumerable 인터페이스를 한번 알아보게 습니다. 위 코드 내용을 전체적으로 살펴보면, Person 즉 사람 객체가 있고 사람객체를 Student, Professor (학생, 교수) 이 두 객체가 상속해서 클래스를 구현해둔 모습을 알 수 있습니다. 학생객체 및 교수객체는 부모클래스 멤버 매소드인 Print매서드를 오버라이드해서 재 구현해주고 있습니다. 그렇게되면 부모객체배열(사람배열)을 생성해서 자식인 학생,교수 객체를 각각 넣어준뒤에 Print()해주면 각각 재정의해준 Print매서드가 ..
[C#] 참조복사 값복사 (얕은 복사, 깊은 복사)오후 2:10 2018-04-05 수업내용정리 [TUTO][생성자]객체가 생성될때마다 호출 [스테틱 생성자]프로그램이 시작되고 (이 클래스가 있는지확인할때) 딱 한번만 실행된다.그럼 목적이무엇이냐?스테틱 멤버를 초기화할 목적으로 사용한다. []타입이 사용되기 전에는 딱 한번 컴파일 될 필요가 있다.이때 타입이있구나 해석이된다. 이때 스테틱 생성자가 호출된다.타입이 호출될 때. 타입은 한번호출하면 그 다음부터는 호출되지 않는다.1000개의 타입중 우리가 사용될 타입만 생성되고 인식되는데 이때스테틱생성자가 스테틱변수(필드)를 초기화할 목적으로 같이 실행된다. [static]C#에서는 지역(변수)에 생성할 수 없다.시스템 내부에서는 static을 전역으로 생성..
C# Linq (from in select 구문, orderby)리스트 등의 컬렉션에서 조건에 맞는 데이터를 추출하는 코드가 자주 사용되기 때문에 개발된 것이 바로 Linq(*쿼리)이다. 그래서 전형적으로 반복적으로 사용되는 코드를 좀 더 줄일 수 있게 해줍니다.*쿼리:정보 수집에 대한 요청에 쓰이는 컴퓨터 언어 예를 들어서 위와 같은 코드는 input1이라는 리스트(list)컬렉션에 있는 데이터 중에서 짝수만 output1에 담아주는 코드인데 이런 것이 자주 사용되다보니, 위 와 같이 3줄로 줄여줄 수 있습니다. 이 구문을 from in select 구문이라고 하는데, 반드시 모든 Linq쿼리는 from, in, select 키워드를 포함시켜야합니다. from 변수이름(맘대로) in 컬렉션이름 sele..
C# 예외처리, 고급예외처리 (try, catch, finally, throw) 적용시키기이번 시간에는 C#프로그래밍언어에서 예외처리를 하는 방법을 공부해보겠습니다.예외처리란 말 그대로 예외가 발생했을 때 어떻게 처리를 해줄 것이냐를 정해주는 것입니다.예를들어서 정수를 입력받아야하는데,문자나 특수문자를 입력하거나인덱스가 10까지 있는 배열인데, 15번째 인덱스에 접근하려고하거나없는 파일인데, 불러오려고 할 경우에예외처리를 각각 주어 처리할 수 있겠죠.예를 들어서 위와 같은 코드는크기가 5인 char형 배열을 선언해서a~e까지 저장을 해주고인덱스를 입력받아서 출력하는 프로그램입니다.그래서 3을 입력하면 정상적으로 0,1,2,3번째 인덱스인 b가 정상적으로 출력되는 것을 알 수 있습니다.그러나 여기서 인덱스..
[C#] 쓰레드(Thread) 사용방법 + start() 메서드(method)안녕하십니까 오늘은 드디어 C#에서 사용되는 Thread, 즉 쓰레드를 공부해보겠습니다.원래는 코드가 한줄 한줄 읽어 내려가면서 순차적인 방법으로 실행이 되었죠.하지만 쓰레드를 사용하게되면, 동시에 여러가지 프로세스를 실행할 수 있습니다. 아니. 마치 동시에 진행되는 것처럼 체감할 수 있죠.실제로 더 파고들어가서 시스템내부를 본다면, 순차적으로 분활실행하는 것인데 이건 패스..쓰레드 생성방법 쓰레드를 생성하는 방법입니다. Thread 클래스 생성자에는 매개변수로다가 메서드명, 무명델리게이터, 람다를 넘겨 줄 수 있습니다.위 예시는 순서대로메서드(함수)명, 무명델리게이터, 람다 를 사용해서 생성해주는 모습입니다.상황에 맞게 효율적..
c# 인터페이스(interface) 그리고 IComparable, IDisposable 무엇이번 글에서는 C#에서 사용되는 인터페이스(interface)라는 기능에 대해서 공부해본 내용을 정리해보겠습니다.인터페이스는 사용자가 코딩을 할 때 이런건 지켜주라고 가이드라인을 주는 것과 비슷합니다.그래서 자기 마음대로 코딩하는 사람이 있다면, 그것을 방지할 수 있겠죠. IComparable 사용방법대표적인 인터페이스로는 IComparable 이 있습니다. 이름 그대로 비교를 할 수 있게하는 인터페이스인데요.여기서 대문자 I로 시작을 하는데 인터페이스는 암묵적으로 대문자I로 시작을 하자고 정했기 때문입니다.위 Product클레스 에서는 IComparable 인터페이스를 상속받았습니다. 그렇기 때문에 Compare..
[C# Dictionary] 메모화 객체 사용하는 방법 효율적! 메모화 객체인 C#의 Dictionary객체는 간단하게 설명하면, 말 그대로 한 번 계산 한 값을 메모해 놓을 수 있는 객체입니다. 반복적인 작업으로 우리가 프로그래밍을 할 때 한 번 구해놓았던 값을 또 계산하지 않아도 되게 해주는 것이죠. 이 객체를 사용하면 효율적인 속도를 내는 프로그램을 작성할 수 있습니다. Dictionary를 이용한 메모화 프로그래밍을 설명하기 위한 예시로 피보나치 수열을 들자면, 만약에 i를 매개변수로 받아서 피보나치수열의 i번째 수를 반환받는다고합시다. 그런데 처음에 5를 입력했다고 치면 피보나치는 0부터 5까지 6번의 연산을 하게됩니다. 이렇게 작은 수라면 연산을 할 때 상관이 없지만 계속적인 값을 만약에 10..
C#프로그래밍 연습문제 Part1 간단한 연습문제를 풀어봅시다. 연습문제는 제가 공부하는 책인 한빛아카데미의C#프로그래밍 책에서 가져오게 되었습니다.인치를 센치로 바꾸는 문제 1. 인치(inch)를 센치(cm)로 구해주는 코드를 작성하세요. 위와 같이 작성했습니다. 출력은 Console.Write로 해주고 먼저 인치단위를 입력받기 때문에 인치는 int로 입력받아줍니다. 그런데 입력을 Console.ReadLine으로 받기 때문에 int.Parse로 인트형으로 변환을 해줍니다. 그리고 cm값으로 변경할 때는 그 인트값에 그냥 2.54를 곱해주면됩니다. (1inch==2.54cm 일때) 그리고 출력을 하게 되면, 이렇게 잘 출력이 되었습니다. 그렇다면 이제 킬로그램(kg)을 파운드(found)로 변환해주는 ..
[c#] foreach 반목문 갖다뽀개기 C언어와 C++언어를 공부하면서 for문까지는 기본적인거니까 알고 있었는데, foreach문은 처음봅니다. 대충 어떻게 사용하는지 갖다뽀개버리면서 알아보도록하겠습니다. foreach문은 컬렉션에 반복문을 사용할 때 사용합니다. 컬렉션이라 여러 개체가 모여서 집합을 이룬 것이라고하죠. 배열같이 말입니다. 그래서 이걸 한번 해보도록 하겠습니다.foreach 사용방법 사용은 그냥 이렇게 하면 됩니다.foreach ( [자료형] [변수명] in [컬렉션]) { [실행 정의부] } 간단하지 않습니까? 맞습니다. 그냥 컬렉션이 가지고 있는 자료형을 써줍니다. 여기서는 string 배열이므로 자료형을 string으로 해주었습니다. 그리고 변수명은 가지고있는 항목임을 나타내니까..
[오류해결] 코드 경로 중 일부만 값을 반환합니다. 코딩을 하던 중 오류를 하나 발견했습니다. 바로 코드 경로 중 일부만 값을 반환합니다. 라는 오류를 말이죠. 저런 오류가 뜨면 대체 이런 오류가 왜 떠 라고생각이 되는데, 그냥 말 그대로 매서드 내에서 일부만 값을 반환한다는 뜻입니다. 예를 들자면, 위와 같이 코딩을 하게되면 같은 오류가 발생하게 됩니다. 일부만 값을 반환한다. 그렇다면 일부는 값을 반환하지 않는 다는 것 입니다. 반환형식은 분명 void가 아닌 int입니다. 그렇다면 어떠한 경우든 간에 int값을 반환해주어야 말이 됩니다. 그런데 위의 코드에서 보면 if문에 비교가 input