클래스 인스턴스의 필드 초기화 이해
클래스를 디자인할 때 필드, 특히 비정적 필드를 적절한 값으로 초기화하는 것이 중요합니다. "필드 이니셜라이저는 비정적 필드, 메서드 또는 속성을 참조할 수 없습니다."라는 오류 메시지는 비정적 클래스 멤버에 직접 액세스하여 클래스 내의 인스턴스 변수를 초기화하려고 할 때 발생합니다.
In 특정 경우 Service 클래스에는 DinnerRepository 클래스의 인스턴스와 검색된 Dinner 개체의 후속 할당으로 초기화된 필드가 포함되어 있습니다. 그러나 이 접근 방식은 앞서 언급한 오류로 이어집니다.
필드 초기화에 대한 대체 솔루션
필드 초기화에 대한 한 가지 대안은 인스턴스 생성자를 사용하여 인스턴스 값을 설정하는 것입니다. Service 클래스에서 생성자를 선언하고 그 안에 있는 DinnerRepository 및 Dinner 필드를 초기화하면 서비스 인스턴스가 생성될 때만 필드를 초기화할 수 있습니다.
public class Service { private readonly DinnerRepository repo; private readonly Dinner dinner; public Service() { repo = new DinnerRepository(); dinner = repo.GetDinner(5); } }
이 시나리오에서 필드는 개체 중에 초기화됩니다. 인스턴스화를 통해 서비스 인스턴스가 애플리케이션에서 사용되기 전에 완전히 설정되었는지 확인합니다.
또 다른 옵션은 메서드와 속성 내의 필드를 느리게 초기화하는 것입니다. 생성자에서 필드를 초기화하는 대신 필요할 때 값을 검색하는 메서드나 속성을 만들 수 있습니다. 이 접근 방식을 사용하면 필드가 데이터로 채워지는 시기와 방법을 더 효과적으로 제어할 수 있습니다.
이러한 지침을 따르면 클래스 인스턴스 내의 비정적 필드를 효과적으로 초기화하여 "필드 이니셜라이저는 비정적 필드를 참조할 수 없습니다"라는 오류를 방지할 수 있습니다. -정적 필드, 메서드 또는 속성."
위 내용은 다른 비정적 필드를 사용하여 클래스 필드를 초기화할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!