닷넷프로그래밍정복 김상형저 가메출판사

1.Root Class - Object class

C#은 모든 클래스와 객체는 BCL(base class library)에 정의한 기본 클래스에 정의된 object 클래스(루트클래스)에서 모두 파생된다.

System.Object.Obj ; // 가장 정확한 표현

Object.Obj;            //네임스페이스 생략

object.Obj;            //언어의 별칭 사용

System.object.Obj;//틀린 표현!!!

Object 기본 메소드

  • ToString
  • GetType
  • MemberwiseClone
  • GetHashCode
  • Equals
  • ReferenceEquals
  • Finalize / ~Object()

 

객체의 비교

  • public virtual bool Equals(Object Obj) - 두 객체의 번지 비교
  • public static bool Equals(Object ObjA, Object ObjB) - 두 객체의 내용비교
  • public static bool ReferenceEquals(Object ObjA, Object ObjB) - 두 객체의 번지 비교

 

 

Reflection - 클래스나 객체의 타입 정보를 조사하는 기능 ex. Name, NameSpace, BaseType, IsAbstract, IsArray ...

클래스가 제공하는 정보는 전부 읽기 전용이고 타입정보를 얻는 방법은 세가지이다.

  1. Object의 GetType method 이용 ex Now.GetType()
  2. 정적 GetType 이용 ex. Type.GetType("Time")
  3. typeof 연산자 이용 ex. typeof(Time)

 

 

2.string Class

string 객체의 문자열은 읽기전용이다. 그래서 string의 메소드는 문자열 객체를 변경하는 것이 아니라 힙에 새로운 문자열을 만들어 리턴함을 주의하여야 한다.

ex. string str = "abcd";

      str.ToUpper()

의 경우 str이 "abcd"에서 "ABCD"로 바뀔 것 같지만 실제로 str은 그대로 이고 ToUpper()의 리턴값이 "ABCD"일뿐이다. 원래 문자열을 바꿀려면

ex. string str = "abcd";

      str =str.ToUpper();

로 수정해주어야 한다.

문자열을 수정하게 되면 문자열은 최초의 문자열이 변경되는 것이 아니라 메소드를 호출할때마다 새로운 문자열을 만들고 이전 문자열이 삭제되는 과정을 거치기때문에

매번 수정할때마다 힙상의 메모리 주소가 다르고 조작시 굉장히 비효율적이다. GC에도 부담이다. 잦은 문자열 조작에는 string builder를 사용해야 한다.

 

stringbuilder class

사용하는 방법은 string class와 유사하지만 메모리를 미리 할당해놓고 객체 자체를 조작하기때문에 훨씬 더 빠르다.

 

서식화

객체의 정보를 출력하기 위한 ToString을 보다 자세하고 원하는 방향으로 출력하기 위해서 ToString을 override해서 사용할수 있다. 또한 IFormatable 을 상속받아 locale정보까지 포함시켜 출력할수 있다.

 

정규식

검색식을 구성하는 문법을 규정하며 그 자체가 하나의 언어이다. Regex 클래스의 정적 메소드를 이용하여 사용할수 있다.

 

 

3.Collection - 변수들의 조직적인 집합이며 System.Collections의 파생클래스이다.

ArrayList - 정적인 Array와 달리  실행중 언제든지 크기를 확장, 축소할수 있는 동적 배열이다.저장되는 타입은 모든 타입이 가능하다. 여러개의 타입을 섞어 쓸수도 있다.

HashTable - 키와 값을 한쌍으로 저장하는 자료구조이다. 빠른 검색을 위해서 해쉬 알고리즘을 사용하였다. 해시란 자료의 고유한 해쉬값으로부터 저장할 위치를 선택하는 기법이다.

                 Equals과 GetHashCode를 재정의하여 고유의 객체 찾기를 할수 있다.

Stack / Queue

 

4.Utility class

DateTime - 날짜와 시간을 표현. 날짜는 특정한 시점을 나타내는데 두 날짜간의 간격을 표현할수 있는 클래스(TimeSpan)이 따로 있다. 이 클래스의 간격 정밀도는 천만분의 1초이다.

좀 더 짧은 시간을 측정하기 위해서는 Stopwatch라는 클래스도 있다.

Math - 수학함수들이 제공하는 클래스. 모든 메소드는 정적이다.

Environment - 이 클래스는 OS나 컴퓨터 시스템 또는 컴파일러 등에 대한 정보를 제공한다.

 

 

이 글은 스프링노트에서 작성되었습니다.

by 무위자연 2008. 8. 26. 09:23