Dalam C#, ralat "Rujukan objek diperlukan untuk mengakses medan, kaedah atau sifat bukan statik" biasanya berlaku apabila kaedah statik cuba mengakses ahli kelas bukan statik.
Ralat dalam artikel ini berlaku dalam baris kod berikut dalam kaedah Main
:
<code class="language-c#">Population[i].bits = GetRandomBits();</code>
Masalahnya ialah dengan kaedah GetRandomBits
, yang diisytiharkan sebagai kaedah bukan statik dalam kelas Program
. Walau bagaimanapun, kaedah Main
ditakrifkan sebagai kaedah statik, yang bermaksud ia hanya boleh mengakses ahli statik kelas.
Terdapat dua cara untuk menyelesaikan ralat ini:
1. Buat contoh kelas:
Kaedah statik tidak boleh mengakses ahli bukan statik secara langsung. Untuk mengakses kaedah atau sifat bukan statik daripada kaedah statik, anda mula-mula membuat tika kelas dan kemudian memanggil kaedah atau mengakses sifat melalui tika itu. Contohnya:
<code class="language-c#">// 创建 Program 类的实例 Program p = new Program(); // 通过实例调用 GetRandomBits 方法 Population[i].bits = p.GetRandomBits();</code>
2. Jadikan kaedah statik:
Sebagai alternatif, anda boleh menjadikannya kaedah statik dengan menambahkan kata kunci Program
apabila mengisytiharkan kaedah GetRandomBits
dalam kelas static
. Dengan cara ini, kaedah Main
statik boleh terus mengakses kaedah GetRandomBits
tanpa membuat tika. Contohnya:
<code class="language-c#">public static string GetRandomBits() { // 方法实现 }</code>
Dengan salah satu kaedah di atas, anda boleh menghapuskan ralat dan membuat kaedah Main
mengakses kaedah GetRandomBits
dengan betul.
Atas ialah kandungan terperinci Mengapa C# Membuang 'Rujukan Objek Diperlukan untuk Medan, Kaedah atau Harta Bukan Statik'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!