닷넷(19)
-
5장 - 5
가비지 수집기(Gabage Collector) CLR의 힙은 세대(generation)를 나눠 관리. static void Main(string[] args) { object pg = new object(); Console.WriteLine(GC.GetGeneration(pg));// result : 0 GC.Collect();// GC 수집 Console.WriteLine(GC.GetGeneration(pg));// result : 1 GC.Collect();// GC 수집 Console.WriteLine(GC.GetGeneration(pg));// result : 2 GC.Collect();// GC 수집 Console.WriteLine(GC.GetGeneration(pg));// result : 2..
2014.12.02 -
5장 - 4
예외 (Exception) 예외 발생시 CLR은 예외를 전파하는데이 자체도 특정한 Type의 인스턴스이다. 이미 정의되어 있는 예외타입을 비롯하여 모든 예외는 관례상 다음 규칙을 따른다.- 개발자가 정의하는 예외는 System.Exception을 상속받은 System.ApplicationException을 상속받는다.- 접미사로 Exception을 클래스명에 추가한다.- CLR에서 미리 정의된 예외는 System.SystemException을 상속받는다. But 최근에는 개발자가 만드는 예외도 System.Exception을 상속받도록 권장하고 있는데MS에서도 내부적으로 위의 관례를 따르지 않았기 때문이란다. 예외 처리CLR은 예외 발생시 예외 처리기가 있을 경우 해당 예외 처리기로 예외를 넘기며,그렇지..
2014.11.27 -
5장 - 3
버전 관리 닷넷에서는 1. 전역 어셈블리 캐시 (Global Assembly Cache) - GAC2. 강력한 이름의 어셈블리 (string-named assembly0 두 가지를 가지고 버전관리를 한다. MS에서 제공하는 개인키 생성용 파일인 sn.exe를 개발자 명령프롬프트에서 실행sn -k temp.snk하면 temp.snk라는 개인키가 담긴 파일을 생성한다.이 파일을 이용하여 공개키 토큰값을 어셈블리 파일명에 부여할 수 있다. 이 공개키 토큰이 적용된 어셈블리를 [강력한 이름의 어셈블리] 라고 지칭한다. *서명 **닷넷 프레임워크가 설치되면 C:\Windows\assembly라는 폴더가 생성되고 전역 어셈블리 캐시(GAC)라고 부르는 전용 어셈블리 저장소로 사용된다. 오직 [강력한 이름의 어셈블리..
2014.11.24 -
5장 - 2
AssemblyInfo.cs 비주얼 스튜디오로 프로젝트를 만들었다면Properties라는 폴더가 기본적으로 생성되고 그 하위에 AssemblyInfo.cs 파일이 있다.이 안에는 어셈블리 단위로 지정된 특성들이 존재하며대부분 프로젝트를 설명하기 위한 용도로 사용된다. checked, unchecked오버플로우나 언더플로우 발생시 예외 발생시키고 강제 종료. short c = 32767;checked{ ++c; // exception} params가변인자.void PrintAll ( params object[] vals ) app.config닷넷어플리케이션을 실행하면 CLR이 초기화 되고 C#코드들이 실행된다.이때 CLR 초기화 과정에 뭔가 관여하고 싶을 때가 있지만 순서 문제 때문에 불가능하다. app...
2014.11.23 -
5장 - 1
C# 1.0 특성 (attribute) /** author : Someone*/public class Everything{} 위 코드와 같은 주석을 남겼을때 이 주석은 빌드 과정을 거친 결과물인 exe / dll에는 전혀 남지 않게 된다.이런 문제를 해결해 주는 것이 특성이다. 닷넷의 어셈블리 파일에는 스스로는 기술하는 메타데이터가 있음어셈블리 내에서 구현하는 타입, 멤버등의 정보가 메타데이터임.특성도 이런 메타데이터로 분류. 특성은 사실 클래스.4장에 나왔던 [Flags] 특성은 FlagsAttribute 라는 클래스. 기본적으로 System.Attribute 클래스에서 파생된다. // 특성 클래스 정의 class AuthorAttribute : System.Attribute { } // [Author..
2014.11.21 -
4장 - 3
enum 정의시 [Flags] 특성 사용 가능enum타입의 인스턴스가 여러개의 값을 포함하는 용도로 쓰일때 [Flags] 특성 사용. enum Days{Sunday = 1,Monday = 2,Tuesday = 4,Wednesday = 8,// ...} 이런 정의가 있고Days dday = Days.Sunday | Days.Monday;Console.WriteLine(dday)의 결과는 3이 나온다. [Flags]enum Days...로 정의하면 같은 코드의 결과값이Sunday, Monday로 나오게 된다. Event 인덱서
2014.11.20