[CLR via C#] 7장 - 상수 및 필드

4472 단어 독서 노트c#
1. 상수는 변하지 않는 기호로 컴파일할 때 ( )부터 프로그램 집합 에 저장됩니다.
상수 값은 변하지 않기 때문에 상수는 항상 유형 정의의 일부분으로 간주된다. 즉, 상수는 항상 실례 구성원이 아니라 정적 구성원으로 간주된다.
2. CLR 지원 ( ) ( ) 유형 필드: 필드 데이터를 수용하는 데 필요한 동적 메모리는 유형 대상에 분배되고, 유형 대상은 유형이 하나AppDomain에 불러올 때 생성됩니다. 그러면 언제 유형을 하나AppDomain에 불러올까요?이것은 보통 이 유형의 어떤 방법을 인용해서 처음 JIT 컴파일할 때이다.실례 필드: 필드 데이터를 수용하는 데 필요한 동적 메모리는 유형의 실례를 구성할 때 분배됩니다.
3. 필드 수정자
CLR 용어
C# 용어
설명
Static
static
이런 필드는 유형 상태의 일부분이지 대상 상태의 일부분이 아니다
Instance
(기본값)
이런 필드는 유형의 실례와 연결되는 것이지 유형 자체와 연결되는 것이 아니다
InitOnly
readonly
이런 필드는 하나의 구조기 방법의 코드로만 쓸 수 있다. , readonly
Volatile
volatile
컴파일러, CLR, 하드웨어는 이 필드에 접근하는 코드에 대해 '라인이 안전하지 않다' 는 최적화 조치를 실행하지 않습니다.모든 참조 유형, Single, Boolean, Byte, SByte, Int16, UInt16, Int32, UInt32, Char, 그리고 기본 유형은 Byte, SByte, Int16, UInt36, Int32 또는 UInt32의 모든 열거 유형입니다.
4.readonly가 어떤 인용 유형의 필드를 수식할 때 변경할 수 없는 것은 인용이지 필드 인용의 대상이 아니다.
public sealed class AType{
     
	// InvalidChars           
	public static readonly char[] InvalidChars = new char[] {
      'A', 'B', 'C' };
}

public sealed class AnotherType{
     
	public static void M(){
     
		//           ,      ,    
		AType.InvalidChars[0] = 'X';
		AType.InvalidChars[1] = 'Y';
		AType.InvalidChars[2] = 'Z';
		
		//           
		AType.InvalidChars = new char[] {
      'X', 'Y', 'Z' };	// Error
	}
}

좋은 웹페이지 즐겨찾기