* .Net (닷넷) 프레임워크
- 윈도우 프로그램 개발 및 실행 환경
- 크게 CLR 과 닷넷 프레임워크 클래스 라이브러리로 나눌 수 있다
* 클래스 라이브러리
- BCL (Base Class Library) : 핵심적인 클래스
- Windows User Interface : 윈도우 폼
- ASP.NET : 웹프로그래밍 지원
- ADO.NET : DB 지원
* CLR (Common Language Runtime)
- 닷넷 언어는 컴파일 후에 MSIL 로 변환된다. 이를 Windows 에서 실행하기 위해서는
CLR 에 있는 JIT 컴파일러를 통해 Native Code 로 컴파일 후에 실행시킨다
(즉, MSIL 은 자바의 byte code 와 유사하며, CLR 은 JRE(JVM) 과 유사하다)
* MSIL (Microsoft Intermediate Language)
- 어느 플랫폼에서 만들었는지 상관없이 자신의 플랫폼에서 사용할 수 있게 해준다
- VB.NET, C#, C++.NET 등을 MSIL 로 컴파일하면 닷넷 기반의 exe (실행파일), dll (클래스 라이브러리) 로 만들어진다.
* C#
- C++ 에서 + 2개가 더해져 만들어짐
- Java 처럼 Garbage Collector 를 지원
* COM (Component Object Model)
- 프로그램의 단위를 컴포넌트로 생각하고 개발하는 것
* VS 의 Solution 과 Project
- 1개의 솔루션에 여러개의 프로젝트가 포함될 수 있고, 프로젝트별로 적용, 빌드, 배포 설정을 달리 할 수 있다
- .sln / .suo 확장자로 만들어진 파일을 통해 솔루션을 관리한다
- 프로젝트는 .csproj 확장자로 관리된다.
* Command 로 컴파일하기
- 프로젝트 폴더에서 "csc xxxxx.cs" 명령어 입력
* C# 의 시작점
- public static void Main() 메소드에서 시작한다
* swtich 문
- C# 은 다른 언어와 달리 조건 검사를 순차적으로 하지 않기 때문에 break, return 등을 꼭 작성해야 한다
* 매개변수 타입
- Reference 변수
: "ref" 라는 키워드를 이용한다
: ref int n = int& n
: ref n = &n
- In 변수
: "in" 키워드 사용
: 참조로 전달하지만 읽을 수만 있음
- Out 변수
: "ref" 타입과 유사하지만, 차이점은 ref 는 메소드로 전달되기 전에 초기화 되어야 한다.
하지만, out 은 초기화 없이 전달 가능하지만 호출된 메소드에서 초기화한 이후에 리턴 되어야 한다.
- Params 변수
: "params" 키워드를 활용한 가변길이 방식이다
: params int[] n= int... n
* 접근 지정자
- public : 외부에 모두 공개할 경우 사용
- private : 같은 클래스 내에서만 접근 가능
- protected : 같은 클래스 및 파생 클래스에서만 접근 가능
- internal : 동일한 물리적 파일 안에 있는 클래스에서만 접근할 수 있다
- protected internal : 같은 물리적 파일 안의 파생 클레스에서만 접근할 수 있다
* 기본 접근 지정자
- private : 필드, 메소드, 속성, 이벤트
- internal : 클래스, 구조체, 열거형, 인터페이스, 위임자
* Read only
- 초기에 정해진 값을 변경하지 않고 사용한다는 의미
- Java 의 final 과 비슷
* 메소드 오버라이딩
- public virtual void name() = Java abstract 와 동일
- public override void name()
* is 연산자
- Java 의 instance of 와 동일
* as 연산자
- vehicle = car as Vehicle;
- Car 형 변수를 Vehicle 로 형변환 성공하는 경우에는 Vehicle instance 를 리턴하고 그렇지 않으면 null 을 리턴
* Indexer
- 객체를 배열처럼 사용할 수 있게 해주는 연산자
public class IndexerTest
{
private Hashtable myFavorite = new Hashtable();
public string this [string kind]
{
get {return (string myFavorite[kind]; }
set {myFavorite[kind] = value; }
}
}
public static void Main()
{
IndexerTest it = new IndexerTest();
it["fruit"] = "apple";
it["color"] = "blue";
}
'SW > SW 서적' 카테고리의 다른 글
///Kotlin in Action / 드미트리 제메로프, 스베트라나 이사코바 / 에이콘출판 (0) | 2024.07.21 |
---|---|
///SQL Anti Patterns / 빌 카윈 / 인사이트 (0) | 2024.04.01 |
조엘 온 소프트웨어 / 조엘 스포스키 / 에이콘출판 (0) | 2022.07.04 |
///자바의 정석 (0) | 2020.10.04 |
자바 성능 튜닝 / 스캇오크스 / 비제이퍼블릭 (0) | 2020.09.06 |