Rumah >pembangunan bahagian belakang >C++ >Mengapa 'Rujukan Objek Diperlukan' Muncul Apabila Memanggil Kaedah Bukan Statik daripada Kaedah Statik dalam C#?
Ralat kod C#: "Rujukan objek diperlukan untuk mengakses medan, kaedah atau sifat bukan statik"
Coretan kod yang disediakan melemparkan ralat dalam Kelas 2 (Melaksanakan Algoritma) disebabkan percubaan untuk mengakses kaedah bukan statik Main()
daripada kaedah statik GetRandomBits()
.
Dalam kaedah Main()
, baris Population[i].bits = GetRandomBits();
menyebabkan ralat. Masalahnya ialah GetRandomBits()
ialah kaedah bukan statik dalam kelas Program
, manakala Main()
ialah kaedah statik.
Penyelesaian: statik vs. bukan statik
Penyelesaian:
Program
dan panggil GetRandomBits()
daripada tika itu. <code class="language-csharp">// 创建 Program 实例 Program p = new Program(); // 从实例访问非静态方法 Population[i].bits = p.GetRandomBits();</code>
GetRandomBits()
statik: Ubah suai kaedah static
kepada kaedah statik dengan menambah kata kunci GetRandomBits()
sebelum pengisytiharan kaedah. <code class="language-csharp">public static string GetRandomBits() { // 在此处实现方法逻辑... }</code>
Kaedah yang anda pilih bergantung pada reka bentuk program anda dan tujuan kaedah GetRandomBits()
. Jika GetRandomBits()
perlu mengakses ahli kelas bukan statik lain, ia mesti menggunakan kaedah pertama (buat contoh). Jika GetRandomBits()
tidak perlu mengakses ahli kelas bukan statik, pendekatan kedua (menjadikannya statik) adalah lebih bersih. Ingat, penggunaan kaedah statik yang berlebihan boleh menyebabkan kod anda kurang boleh diuji dan diselenggara.
Atas ialah kandungan terperinci Mengapa 'Rujukan Objek Diperlukan' Muncul Apabila Memanggil Kaedah Bukan Statik daripada Kaedah Statik dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!