필드 는 개체 와 연결 된 데이터 를 보관 합니다 . 대부분 의 시나리오 에서 는 라이브러리 의 일반 필드 가 개발자 에게 표시 되 지 않 습니다 . 다음 지침 은 라이브러리 디자인 에서 필드 를 올바로 사용 하 는 데 도움 이 됩니다 . 공용 또는 보호 된 인 스턴스 필드 를 제공 하 지 않 습니다 . 공용 및 보호 된 필드 는 버전 을 지정 하 지 않 고 코드 액세스 보안 요청 으로 보호 되 지 않 습니다 . 공개 적 으로 표시 되 는 필드 를 사용 하 는 대신 전용 필드 를 사용 하 여 속성 을 통해 노출 합니다 . 변경 되 지 않 는 상수 에 는 상수 필드 를 사용 합니다 . 예 를 들 어 , Math 클래스 는 E 및 PI 을 정적 상수 로 정의 합니다 . 컴파일러 는 const 필드 의 값 을 호출 코드 에 직접 삽입 하 며 이 경우 const 값 을 변경 하 면 호환 성 문제 가 발생 할 수 있 습니다 . 미리 정의 된 개체 인 스턴스 에 는 공용 정적 읽 기 전용 필드 를 사용 합니다 . 예 를 들 어 , DateTime 클래스 는 최대 또는 최소 시간 값 으로 설정 된 DateTime 개체 를 가져오 는 데 사용 할 수 있 는 정적 읽 기 전용 필드 를 제공 합니다 . MaxValue 
 및 MinValue 을 참조 하 십시오 . 변경 가능 한 형식 의 인 스턴스 를 읽 기 전용 필드 로 지정 하 지 않 습니다 . 변경 가능 한 형식 을 사용 하 여 만든 개체 는 수정 할 수 있 습니다 . 예 를 들 어 , 배열 과 대부분 의 컬렉션 은 변경 가능 한 형식 이 지만 Int 32 , Uri 및 String 은 변경 할 수 없 는 형식 입니다 . 변경 가능 한 참조 형식 이 있 는 필드 의 경우 읽 기 전용 한 정자 가 필드 값 을 덮어쓰 지 않 도록 막 지만 변경 가능 한 형식 이 수정 되 지 않 도록 보호 하 지 는 않 습니다 . 다음 코드 예제 에서 는 읽 기 전용 필드 를 사용 하 는 데 따른 문제 를 보여 줍니다 . BadDesign 클래스 는 읽 기 전용 필드 를 만들 고 읽 기 전용 속성 을 사용 하 여 노출 합니다 . 이렇게 하 면 ShowBadDesign 클래스 가 읽 기 전용 필드 의 내용 을 수정 할 수 없 습니다 . C # C ++ VB