C#
![](https://tistory1.daumcdn.net/tistory/3503189/skin/images/no-image.jpg)
인터페이스 (interface) : 접속하다, 접점 Interface I인터페이스명 { //여기 하위에서 구현 //Console.WriteLine(); 등 } interface에서는 구현하지 않고 형식만 포함한다. 하위에서 구현함. 기본 접근권한은 "public" (b/c 하위에서 구현해야하니까!) 다중 상속이 가능 상속으로만 사용되고, interface는 생성자로 생성할 수 없음 ( = "new" 사용 불가능 ) 이벤트, 인덱서, 메서드, 속성을 포함함
![](https://tistory1.daumcdn.net/tistory/3503189/skin/images/no-image.jpg)
클래스 (class) : 변수와 메서드를 그룹화한 것 [ 클래스 특징 ] "new" 명령을 사용하여 class를 생성 만약 "new"를 사용하지 않는다면, class를 참조할 수 있는 변수가 됨 ( = "클래스 참조 변수" ) class를 정의하고 사용하는 방법은 아래와 같다: [접근한정자] class 클래스명 { [접근한정자] 변수 선언; [접근한정자] 메서드 선언; } [ 접근한정자 ] 접근한정자 (access modifier) : class 멤버에 대한 접근 권한 설정 public, private, protected, internal, protected internal, ... class 자체에 적용하는 접근한정자 : public (명시적), internal (암시적) 1) public class ..
![](https://tistory1.daumcdn.net/tistory/3503189/skin/images/no-image.jpg)
매개변수 (parameter) : 메서드 괄호 안에 정의되고, 프로시저에 data를 넘겨 코드를 호출하는 역할. class MyClass { //클래스 생성 ... string strPara = ""; getSQL(strPara); // strPara = "인자"라 부름 } public void getSQL(String para){ //메서드 생성, 매개변수 생성 ... } // para = "매개변수"라 부름 //매개변수(인자) strPara가 class 안에서는 일반 변수처럼 사용됨 ※주의사항 1) 매개변수가 값을 전달할 경우, data를 복사한 값을 프로시저에 전달함 → 프로시저 내에서 매개변수 값 변경해도 기존 data 값은 변경되지 않음 2) 매개변수가 참조를 전달할 경우, 매개변수가 포인터 역..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/bBRvlm/btq65erW4K0/8Sth1qcwtCu0BRJ1fKord0/img.png)
![](https://tistory1.daumcdn.net/tistory/3503189/skin/images/no-image.jpg)
메서드 (method) : 특정 행동을 하는 코드를 메서드로 묶어서 소스코드 내에서 반복적으로 사용 가능 *메서드의 장점 : 반복적으로 사용되는 코드를 줄임으로써 코드 가독성을 높임 값 반환하지 않는 메서드 선언: private void 메서드명( ) { } → private : 해당 class 내에서만 메서드 호출 가능 (public : 외부 class에서도 메서드 호출 가능) → void : 값 반환 X → 메서드명은 예약어 X, 공백 X → 소괄호 () : class의 객체에 대한 참조를 parameter 형태로 전달받을 수 있음 (이건 필요에 따라 정의하거나 빈칸으로 둘 수 있음) 값 반환하는 메서드 선언 : private 데이터타입 메서드명( ){ } → 작업 성공여부에 따라 true/false..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/UVdZ8/btq66kkPifS/ssyfJHMBkAskYdY0rzqQX0/img.png)
![](https://tistory1.daumcdn.net/tistory/3503189/skin/images/no-image.jpg)
이전에 포스팅에서 언급했듯이, C#은 C, C++, Java를 베이스로 설계한 언어이므로 연산자, 문장 구조 및 의미는 모두 표준 C언어와 비슷하고 객체지향 특성은 C++, 자바와 유사하다. 객체 지향 프로그래밍(Object-Oriented Programming, OOP)을 한다는 것은, 모든 자료형을 객체형으로 취급한다는 의미이다. 이 전에 파이썬, C언어, 자바 등 다른 언어를 공부했다면, 위 그림을 쉽게 이해할 수 있을거다. [ 값형식 ] 값형식(Value Type) : 값을 선언하고 바로 사용 가능. "new"를 통해 변수 생성해야 메모리 확보할 수 있음. → "new" 사용하면 생성자가 초훌되고 기본값으로 초기화됨. 값형식 종류에는 숫자형, 문자형, 논리형, 열거형, 구조체형이..
![](https://tistory1.daumcdn.net/tistory/3503189/skin/images/no-image.jpg)
Console.ReadLine( ) : 엔터키가 눌려질 때까지 입력 받은 문자열을 반환하는 메서드 Console.ReadKey( ) : 사용자가 누른 키 한 문자 정보를 리턴하는 메서드 이런식으로 오버로드해서 사용할 수 있음: public static ConsoleKeyInfo ReadKey( ) public static ConsoleKeyInfo ReadKey(bool intercept) 결괏값이 true 이면 화면 출력을 하지 않고, false 이면 화면 출력함. 위의 오버로드된 예시에서 "ConsoleKeyInfo" 란 뭘까? ConsoleKeyInfo : 구조체. 키의 문자와 Shift, Alt, Ctrl 보조키 상태를 포함. → 속성 : ConsoleKey.Key (key 값 자체만 인식함. e..
![](https://tistory1.daumcdn.net/tistory/3503189/skin/images/no-image.jpg)
[ 박싱 ] 박싱 (boxing) : data type을 최상위 object형으로 변환하여 힙 메모리에 저장. → 힙(heap) 메모리 = 임시로 사용하는 메모리 int m = 123; object obj = m; // int형 변수를 obj형으로 변환 m = 456; //m에 저장되어있던 123이 삭제되고 456이 들어감. Console.WriteLine("기존: {0}, 현재: {1}", (int)obj, m); // 기존: 123, 현재: 456 [ 언박싱 ] 언박싱 (unboxing) : 힙에 저장된 형식을 다시 기존의 형식으로 변환. 박싱의 정반대 int m = 123; object obj = m; int n = (int)obj; Console.WriteLine("{0}", n);
![](https://tistory1.daumcdn.net/tistory/3503189/skin/images/no-image.jpg)
참고 사항 : *CLR, CTS, CLS -> .NET Framework 안에 이미 내장되어있음 *Class 라이브러리, CLR 에 대해서는 이전 포스트를 참고할 것 (.NET Framework 포스트 참고) C# 프로그래밍 = C# 언어 + Class 라이브러리 C# = C++기반 + java의 장점 -> C#은 C, C++, Java를 베이스로 설계한 언어이므로 연산자, 문장 구조 및 의미는 모두 표준 C언어와 비슷하고 객체지향 특성은 C++, 자바와 유사함. CLR은 컴파일된 C코드 (.exe, .dll 파일)를 실행시키는 역할을 하는데, 이 코드를 "중간언어 (Intermediate Language, IL)" 라 부른다. .Net Framework가 .exe파일을 읽어서 OS에 맞게끔 다시 컴파일..