Rumah > pembangunan bahagian belakang > C++ > Mengapa C# Membuang 'Rujukan Objek Diperlukan untuk Medan, Kaedah atau Harta Bukan Statik'?

Mengapa C# Membuang 'Rujukan Objek Diperlukan untuk Medan, Kaedah atau Harta Bukan Statik'?

Linda Hamilton
Lepaskan: 2025-01-22 05:31:09
asal
218 orang telah melayarinya

Why Does C# Throw

Pengecualian C#: "Rujukan objek diperlukan untuk mengakses medan, kaedah atau sifat bukan statik"

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>
Salin selepas log masuk

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.

Penyelesaian

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan