본문 바로가기

c#.net

박준호님의 C# 강좌 - Namespace Namespace class와 각종 data type들을 그 연관성에 따라 그룹화시키는 논리적인 개념 Namespace를 중첩시켜 계층적인 data type을 구성 class의 이름 충돌을 해결하기 위한 용도로 사용 Namespace를 사용할 경우 이름이 길어지게 되는데, 이것을 해결하기 위해 Namespace Alias를 통해 Namespace의 별칭을 지정할 수 있다. namespace에 포함될 수 있는 것 namespace, class, interface, struct, enum, delegate Namespace의 범위 class는 그 class가 참조될 수 있는 범위를 가지고 있다. namespace가 지정되지 않으면 같은 namespace에서 처리 using System; class Utili.. 더보기
[C# 강좌] C# 프로그래밍 #10- 구조체 3.3 구조체 3.3.1 구조체(structure) 소개 구조체를 사용하는 목적은 자료구조를 표현하기 위해서 있다. 기본적인 형태와 특징은 클래스와 비슷하다. 클래스와 마찬가지로 인터페이스에 대한 상속을 지원하며 메서드를 가질 수 있는 반면, 자료의 타입이 값 형태(Value Type)으로 지정된다. 이는 데이터에 대한 접근이 stack에 바로 접근해서 데이터를 가져올 수 있는 반면, 참조 형식(Reference Type)의 경우 stack에 접근해서 클래스의 Heap상의 위치에 대한 참조를 가져와야만 한다. 따라서, 간단한 자료 구조에 대한 표현이나 데이터형이 필요할 경우 구조체로 만드는 것이 성능면에서 유리하다는 것을 알 수 있다. 구조체의 기본 형식은 다음과 같다. /속성/ /엑세스 한정자/ str.. 더보기
[C# 강좌] C# 프로그래밍 #09- 상속 3.2 상속 3.2.1 상속이란? 상속이란 클래스를 만들 때, 이전에 만들어진 클래스의 기능을 가져와 클래스를 구성하거나 사용하기 위해 사용되는 객체지향프로그래밍 기법의 하나이다. C#에서 상속은 C++와는 약간의 차이가 있는데, 그 중 하나는 클래스 다중 상속을 지원하지 않는 다는 것이다. “승용차”, “SUV차량” 2개의 자동차에 대한 프로그램을 만든다고 가정하자. 2가지 클래스의 공통점은 자동차라는 것이다. 또한, 기능적인 면에서 거의 일치하며, 다만 약간씩의 차이가 있을 뿐이다. 이것을 어떻게 구현할 것인가? 유사한 기능들을 “승용차”에 구현하고 또 “SUV차량”에 구현하는 것은 구조적으로 좋지 못하다. 1) 기능을 업데이트 할 때 2가지 차량에 대한 모든 기능을 수정해야 한다. 2) 차종이 많아.. 더보기
[C# 강좌] C# 프로그래밍 #08- 클래스 3. 객체 지행 프로그래밍(Object Oriented Programming) 3.1 클래스 3.1.1 C# 프로그램 구조 C# 프로그램은 클래스를 기본 요소로 모든 수행코드가 클래스 내에서 이루어진다. 다음 소스를 보자. 1 2 3 4 5 6 class Program { static void Main(string[] args) { } } 실제 using 구문과 namespace에 대한 정의 없이 위와 같이만 코드를 쳐도 프로그램이 정상적으로 컴파일 됨을 알 수 있다. 이는 이것만으로도 완벽한 프로그램이 된다는 것을 의미한다. 실제 C#의 응용프로그램은 위와 같이 구성된다. 1번째 라인과 같이 클래스가 하나 만들어지고, 3번째 라인과 같이 실제 프로그램의 진입점인 Main 메서드를 구현하게 된다. 다시 .. 더보기
[C# 강좌] C# 프로그래밍 #07 - 흐름제어 2.5 흐름 제어일반적으로 프로그램은 작성된 코드 순서대로 실행이 된다. 이 실행 순서를 바꾸기 위해 사용되는 방법을 여기서는 설명하도록 하겠다.  2.5.1 조건문 if조건문은 진리값에 따라 코드를 실행해 줄지 말지를 결정해주기 위한 문장이다.  1) 단순 조건문단순 if 문의 경우 다음과 같이 이용될 수 있다.if (상태)    수행 코드 수행 코드가 여러 줄로 나타날 경우 중괄호를 이용해 묶어 줄 수도 있다.if (상태) {    수행 코드1    수행 코드 2} 위 문장은 단순 조건문의 기본형을 보여주고 있다. 참인 경우만을 가지고 조건을 판단할 때는 위와 같이 이용되고, 거짓인 경우에 다른 코드를 실행해주어야 한다면 다시 else 를 이용하여 조건문을 확장할 수 있다. 다음 문장을 보자.if (.. 더보기
[C# 강좌] C# 프로그래밍 #06 - 변수와 상수 2.4 변수와 상수2.4.1 변수 1) 변수의 선언변수는 변수의 데이터 타입과 변수의 이름과 값으로 이루어진다. 변수의 선언이라 함은 미리 어떤 형의 변수를 이용하겠다고 컴파일러에게 알려주기 위해 이용되는 일련의 행위라고 보면 된다. 그럼, 왜 변수를 사용하는가?고급 언어들 중 변수의 선언을 굳이 필요로 하지 않는 언어도 있지만, 이는 언어에 따른 차이일 뿐, 대부분의 프로그래밍 언어는 변수의 선언를 사용자에게 요구한다. 변수를 선언하지 않을 경우, 컴파일러는 다양한 형들에 대해 값이 쓰인 용도를 파악해가며 변수의 형을 내부적으로 재정의 해야한다. 이는 프로그램의 성능에 좋지 않은 영향을 미치게 된다. 다른 이유로 정의되지 않은 형은 결과에 어떤 영향을 줄지 모르며 실행시간에 런타임 에러를 일으킬 소지를.. 더보기
[C# 강좌] C# 프로그래밍 #05 - 연산자와 표현식 2.3 연산자와 표현식 2.3.1 산술 연산자 산술 연산자는 값을 계산하기 위한 연산자이다. 연산자 용도 예 비 고 + 더하기 3+2=5 - 빼기 3-2=1 * 곱하기 3*2=6 / 나누기 3/2=1.5 % 나머지 연산 3%2=1 나머지 값을 구함 ++,-- 증가,감소 1++ 후위 표기, 전위 표기 다름 2.3.2 논리 연산자 논리 연산자는 논리 값(true, false)를 얻기 위한 연산자이다. 연산자 용도 예 비 고 & and 연산 a&b | or 연산 a|b ^ exclusive or 연산 true^true=false 동일 논리 값일 때 false ! not 연산 !true=false 논리 값에 대한 not && 조건식에서 if(a==true&&b==true) || 조건식에서 if(a==true||.. 더보기
[C# 강좌] C# 프로그래밍 #04 - 데이터 형식과 변수 2.2 데이터 형식과 변수C#은 데이터 형식에 대해 값 형식과 참조 형식을 지원한다. 값 형식의 데이터 형식으로 선언된 변수는 스택(Stack)에 있는 데이터를 변수가 직접 가르키는 반면, 참조 형식의 데이터 타입으로 선언된 변수는 스택(Stack)에는 데이터에 대한 참조만을 가지며 실제 데이터는 힙(Heap)에 저장된다. 여기서 데이터 형식(Data Type)은 데이터를 나타내는 형식을 표현한 키워드라고 보면 된다.  C# 키워드.NET 형식크기초기값범위/정밀도형식boolSystem.Boolean1false 값byteSystem.Byte1(+)00~255값sbyteSystem.SByte10-128~127값charSystem.Char2'\0' 0x0000 ~ 0xffff값decimalSystem.Deci.. 더보기