전체 페이지뷰

레이블이 C#인 게시물을 표시합니다. 모든 게시물 표시
레이블이 C#인 게시물을 표시합니다. 모든 게시물 표시

2017년 1월 19일 목요일

C# Thread, Task

멀티프로세싱과 멀티스레딩은 다른 개념입니다. 저는 지금까지 이 두개가 그저 비슷한 말이겠거니 생각해왔는데 실상은 전혀 다르다는 것을 알게 되었습니다.

2017년 1월 16일 월요일

C# File I/O

이번에는 System.IO 네임스페이스의 클래스들을 이용해서 파일의 정보를 다루고 읽고 쓰는 법을 알아봅니다.

2017년 1월 13일 금요일

C#, dynamic

C# 4.0에서 새로이 추가된 형식입니다. 이 형식을 사용하면 컴파일 시에 형식 검사를 하지 않고 런타임에 하게 됩니다.

2017년 1월 11일 수요일

C#, Attribute

Attribute는 클래스에 메타데이터를 직접 추가할 수 있도록 해 줍니다.
이렇게 부가 정보를 작성하는데 주석을 사용할 수도 있습니다.
그러나 주석은 전적으로 사람이 읽도록 만들어진 것이라면 애트리뷰트는 컴퓨터를 위한 것입니다.

2017년 1월 9일 월요일

C# Reflection

리플렉션 객체는 런타임에 형식정보를 얻는데에 이용됩니다. 이 기능을 사용하여 실핼 중에 객체의 형식 이름, 포로퍼티, 메소드, 필드, 이벤트 목록을 모두 볼수 있고, 해당 메소드를 호출하거나 필드, 프로퍼티에 접근하는 것도 가능합니다.  프로그램의 metadata에 접근할 수 있도록 해주는 이 클래스는 System.Refelection namespace에 정의되어 있습니다.

2017년 1월 4일 수요일

C# LINQ

LINQ란 Languqge Integrated Query의 약자입니다.
Query라는 말은 "질문", "문의"라는 뜻으로 DB 작업에서 많이 쓰이는걸 보셨을 겁니다.

2017년 1월 3일 화요일

C# Lambda Expression

람다는 주로 delegate나 Expression tree(식 트리)를 만드는데에 사용됩니다.

매개변수 => 식
의 문법으로 사용가능하며

delegate int del(int i); 
del myDelegate = x => x * x;  
cs
와 같이 사용하여 제곱을 표현하는 델리게이트 인스턴스를 생성했습니다.

2016년 12월 28일 수요일

C# delegate

GUI(Graphic User Interface)같은 프로그래밍을 할 때, Event Driven Programming을 하게 됩니다. 예를 들어서 마우스 클릭 같은 이벤트 말이죠. 그런 이벤트가 일어나면 그 사실을 프로그램에게 알려줄 주체가 필요합니다. 그렇게 이벤트가 일어났음을 Callback 해주는 것이 바로 delegate(대리자)입니다.

Delegate는 특정메소드에 대한 참조를 가지고 있다가 이벤트 발생 시 메소드를 호출해 줍니다.



2016년 12월 27일 화요일

C# Exception Handling

프로그램 실행 중 비정상적인 상황이 발생하면 CLR에게 던져진  에러메세지를 받아 출력하고 프로그램은 강제 종료됩니다. 이런 상황을 처리하는 방법에 대해 알아보도록 하겠습니다.  그런데 왜 에러가 안 나게 하는 법을 배우지 않고 에러를 처리하는 법을 배우는거냐고요? 가장 훌륭한 프로그래머들이 모여 가장 최첨단의 프로그램을 만드는 Microsoft에서 만든 윈도우도 에러가 나서 죽거나 멈추거나 하지 않습니까?

가장 나쁜 경우는 예외가 발생했을 때 처리되지 못하고 이유도 모른 채 죽어버리는 거죠.
그런 경우를 막는 것이 이번 배움의 목표 되겠습니다.

2016년 12월 23일 금요일

C# Generic

제네릭은 C# 2.0부터 CLR에 포함되었습니다. 형식 매개 변수라는 개념을 통해 하나 이상의 형식에 대한 메소드 등을 정의하고 인스턴스가 생성될 때에 형식을 정해주어, 불필요한 박싱을 피하고 런타임에 형식을 캐스팅하는 위험을 덜어주는 방법입니다.

2016년 12월 21일 수요일

C# Collection, Indexer

.NET 프레임워크는 배열 말고도 많은 데이터 모음에 대한 자료구조를 제공합니다.
그 중에서  ArrayList, Queue, Stack, Hashtable 에 대해서 간략히 알아보겠습니다.
(제너릭에 해당하는 List 등은 다음에 알아보겠습니다. 제너릭은 정해진 형식만을 취급할 수 있고 지금 말하는 형식은 Object에 해당하여 아무 형식이나 다 가능합니다.)

System.Collections 네임스페이스를 사용합니다.

C# Array

C나 C++ 에서도 익히 보아온 배열에 대해서 먼저 알아봅니다.
아시다시피 배열은 동일한 형식의 여러 데이터를 하나의 변수명에 저장하여 인덱스로 접근할 수 있게 하는 방법입니다.

C# Property

OOP의 기본 중에 은닉성을 보장하기 위해 지금까지 우리는 마치 C++이나 자바처럼 private이나 protected 한정자로 필드를 숨기고, 이 필드에 접근하는 메소드를 public으로 공개하여 필드를 다루는 방법을 써 왔습니다. 그러나 C#에서는 좀 더 쉽게 이런 방법을 구현할 수가 있고 이것을 property라 부릅니다.

2016년 12월 20일 화요일

C# Interface

공부하면서 가장 궁금했던게 interface의 용법이었습니다.
여기저기 검색해봐도 필요하다...필수적이다..때에 따라 필요하다..디자인패턴을 알면 반드시 필요함을 알게 될거다...우리 팀에서는 금기시 했다...등 다들 대답이 제각각이어서 감을 잡기 어려웠습니다.

2016년 12월 16일 금요일

2016년 12월 14일 수요일

C# Class, Part 1

C#은 객체 지향용 언어입니다.  우리는 어떠한 사물을 프로그래밍으로 구현하기 위해 그 사물의 이름, 크기 등의 속성과 행동양식을 설명해 줄 메소드를 작성합니다. 그렇게 표현된 개념을 클래스라 합니다.

C# Method

아직 데이터형 중 배열과 컬렉션에 대해서는 알아보지 않았지만, 그에 앞서 메소드(method, C에서는 함수라 불러왔던)에 대해서 공부하겠습니다. 컬렉션에는 인터페이스라는 개념이 들어가므로 선행 지식이 필요하다 생각되므로 좀 뒤에서 알아보기로 합니다.

2016년 12월 12일 월요일

C# 번외편 Console.WriteLine, ReadLine

출력 포매팅에도 놀랍도록 많은 옵션이 존재합니다. 자세한 내용은 MSDN을 참고해서 찾아보시기 바라며, 몇가지만 짚어 보고 넘어가겠습니다.

C# 연산자

산술연산자

연산자란 하나 이상의 피연산자에 적용되는 프로그램 요소입니다.
++나 new와 같이 하나에만 적용되는 것을 단항연산자,
산술연산자(+, -, *, /)와 같이 두개에 적용되는 것이 이항연산자,
그리고 조건연산자(?)는 유일한 삼항연산자입니다.