Memahami Pemula Medan dalam Kejadian Kelas
Apabila mereka bentuk kelas, adalah penting untuk memulakan medan dengan nilai yang sesuai, terutamanya medan bukan statik. Mesej ralat ini, "Pengasa medan tidak boleh merujuk medan, kaedah atau sifat bukan statik," timbul apabila anda cuba untuk memulakan pembolehubah tika dalam kelas dengan mengakses terus ahli kelas bukan statik.
Dalam kes khusus anda, kelas Perkhidmatan mengandungi medan yang dimulakan dengan contoh kelas DinnerRepository dan tugasan seterusnya bagi objek Makan Malam yang diambil. Walau bagaimanapun, pendekatan ini membawa kepada ralat yang dinyatakan di atas.
Penyelesaian Alternatif kepada Permulaan Medan
Satu alternatif kepada pemulaan medan ialah menggunakan pembina contoh untuk menyediakan nilai contoh. Dengan mengisytiharkan pembina dalam kelas Perkhidmatan dan memulakan medan DinnerRepository dan Makan Malam di dalamnya, anda boleh memulakan medan hanya apabila contoh Perkhidmatan dibuat:
public class Service { private readonly DinnerRepository repo; private readonly Dinner dinner; public Service() { repo = new DinnerRepository(); dinner = repo.GetDinner(5); } }
Dalam senario ini, medan dimulakan semasa objek instantiasi, memastikan contoh Perkhidmatan disediakan sepenuhnya sebelum digunakan dalam aplikasi.
Pilihan lain ialah dengan malas memulakan medan dalam kaedah dan sifat. Daripada memulakan medan dalam pembina, anda boleh mencipta kaedah atau sifat yang mendapatkan semula nilai apabila diperlukan. Pendekatan ini memberikan lebih kawalan ke atas masa dan cara medan diisi dengan data.
Dengan mengikuti garis panduan ini, anda boleh memulakan medan bukan statik dengan berkesan dalam kejadian kelas, mengelakkan ralat "Pengasa medan tidak boleh merujuk bukan -medan statik, kaedah atau sifat."
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Memulakan Medan Kelas Menggunakan Medan Bukan Statik Lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!