CLR Via C# 학습 목표

2763 단어 C#
오늘 봤는데 유형기초라는 장의 내용을 정리한 김에 깨달음을 나눴습니다.

1,System.Object 유형의 의미


모든 유형은 결국 System에서 시작합니다.Object가 파생되면 Object는 최종 기본 클래스입니다.다음과 같은 네 가지 공통 방법이 있습니다.
  1,Equals.만약에 두 대상이 같은 값을 가지고 있다면 여기서 같은 값은 두 가지 의미가 있다. 첫째, 두 인용 대상이 같은지, 즉 같은 주소를 인용하는지 여부이다.둘째, 동일한 Value 값이 있는지 여부.
  2,GetHashCode.대상의 값을 되돌려 주는 해시표
  3,ToString.이 방법은 형식의 전체 이름을 되돌려줍니다.
  4,GetType.Type에서 파생된 객체의 인스턴스를 반환합니다.

2, new 조작부호의 역할


new 조작부호가 하는 일은 다음과 같다.
1, 형식과 모든 기본 형식 (System.object) 에 정의된 모든 실례 필드에 필요한 바이트 수를 계산합니다.무더기의 모든 대상은 '유형 대상 바늘' 과 '동기화 블록 인덱스' 라는 추가 구성원이 필요합니다.
2, 트랜지스터 더미에서 지정한 형식이 요구하는 바이트 수를 분배하여 대상의 메모리를 분배하고, 분배된 모든 바이트를 0으로 설정합니다.
3, 객체의 유형 객체 포인터 및 블록 색인 동기화 멤버를 초기화합니다.
4, 호출 형식의 실례 구조기는 new에 대한 호출에 지정된 모든 실제 참조를 전송합니다.
이 모든 동작을 실행하면 새 대상을 가리키는 인용을 되돌려줍니다. 분배된 메모리를 방출하려면 쓰레기 회수 메커니즘을 사용합니다.

3, 유형 변환


CLR의 가장 중요한 특성 중 하나는 유형 안전성이다. c#는 어떤 특수한 문법도 요구하지 않고 하나의 대상을 그 어떠한 기본 유형으로 전환할 수 있다. 왜냐하면 기본 유형으로의 전환은 안전한 은식 전환으로 여겨지기 때문이다. 그러나 대상을 특정한 파생 유형으로 전환할 때 c#는 개발자에게 현식 전환만 요구할 수 있다.
코드는 다음과 같습니다.
public class Program

{

    public static void Main()

    { 

       // 

       Object o=new Employee();

       // 

       Employee e=(Employee) o;

    }

}        

4, Is 및 As 연산자 역할


1, is 조작부호는 대상이 지정한 형식에 호환되는 것을 검사하고 브리 값을 되돌려줍니다. is 조작부호는 영원히 이상을 던지지 않습니다.
2, as 조작부호의 작업 방식은 강제 형식 변환과 같다. 단지 이상이 영원히 나타나지 않을 뿐이다. 반대로 대상이 변환되지 않으면 결과는null이다.

5, 운행 시 상호 연계


유형, 대상, 스레드 창고, 트랜지스터가 운행할 때의 상호 관계
1, CLR 프로세스가 로드된 경우 프로세스에 여러 스레드가 있을 수 있습니다.하나의 라인을 만들 때 1MB 크기의 창고에 분배됩니다. 이 창고의 공간은 방법에 실제 참조를 전달하고 방법 내부에 정의된 국부 변수에 사용됩니다.창고는 높은 주소에서 주소를 생각해서 만든 것입니다.
2, 한 방법을 호출할 때'귀환 주소'를 창고에 넣고 호출된 방법은 끝난 후에 호출된 위치로 돌아가야 한다.
3, 트랜지스터 더미에 유형을 분배하는 대상, 더미의 모든 대상은 두 개의 추가 구성원을 포함한다. 유형 대상 바늘과 동기화 블록 인덱스이다.하나의 유형을 정의할 때 유형의 내부에서 정적 데이터 필드를 정의할 수 있다. 이러한 정적 데이터 필드에 지원하는 바이트는 유형 대상 자체에 분배되고 각 유형의 대상에 마지막으로 방법표를 포함한다.방법표에서 유형에 정의된 모든 방법은 대응하는 기록 항목을 가지고 있다.
4, 구조기는 사실상 대상의 상태를 수정하는 방법이다.
마지막으로 본 장의 내용을 볼 때 유형, 대상, 스레드 창고와 위탁 관리 더미가 운행할 때의 상호 관계를 주로 보았다.실례 구성원은 클래스의 대상이고 정적 구성원은 클래스에 속한다는 것을 이해했다.실례의 형식은 두 가지가 있는데 하나는 유형의 실례, 즉 대상이다.다른 하나는 클래스에 정의된 실례 필드입니다.

좋은 웹페이지 즐겨찾기