Rumah > pembangunan bahagian belakang > C++ > Mengapa kaedah statik tidak boleh mengakses ahli bukan statik di C#?

Mengapa kaedah statik tidak boleh mengakses ahli bukan statik di C#?

Susan Sarandon
Lepaskan: 2025-02-02 17:46:09
asal
298 orang telah melayarinya

C# Kaedah statik tidak dapat mengakses kesilapan dan penyelesaian ahli bukan statik

Why Can't a Static Method Access Non-Static Members in C#?

ralat: Objek dirujuk

Serpihan kod berikut menunjukkan masalah ini:

punca masalah
namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        ...

        private static void SumData(object state)
        {
            ...
            setTextboxText(result); // 错误:非静态字段、方法或属性
        }
    }
}
Salin selepas log masuk

Maklumat ralat menunjukkan bahawa kaedah statik cuba hubungi ahli bukan statik

. Kaedah statik hanya boleh mengakses ahli statik, dan ahli bukan statik memerlukan rujukan kepada objek yang dimiliki.

SumData <决> penyelesaian setTextboxText

Terdapat banyak cara untuk menyelesaikan kesilapan ini:

<<> Tetapkan kaedah

sebagai statik:

  1. Walau bagaimanapun, jika kaedah <然> perlu mengakses pembolehubah contoh, ia tidak boleh ditetapkan ke statik. setTextboxText
  2. <<> Panggil
:
public static void setTextboxText(int result)
Salin selepas log masuk

setTextboxText

    dalam <> pembina, tetapkan
  1. ke contoh semasa: . Form1 setTextboxText <调> Buat contoh
  2. dalam kaedah panggilan:
class Form1
{
    public static Form1 Instance;   // 单例

    ...

    private static void SumData(object state)
    {
        ...
        Instance.setTextboxText(result);
    }
}
Salin selepas log masuk

Form1 Instance Jika contoh <实> sudah wujud, kaedah ini mungkin tidak terpakai. Instance = this;

    <调> Kaedah panggilan
  1. ditetapkan kepada kaedah Instance Non -Static (milik ): Form1
private static void SumData(object state)
{
    ...
    Form1 frm1 = new Form1();
    frm1.setTextboxText(result);
}
Salin selepas log masuk
Ini biasanya penyelesaian terbaik kerana ia mengekalkan enkapsulasi dan penyelenggaraan kod.

Form1 Untuk maklumat lanjut, sila rujuk dokumen MSDN.

Atas ialah kandungan terperinci Mengapa kaedah statik tidak boleh mengakses ahli bukan statik di C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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