Rumah >pembangunan bahagian belakang >C++ >Mengapa kaedah statik tidak boleh mengakses ahli bukan statik di C#?
C# Kaedah statik tidak dapat mengakses kesilapan dan penyelesaian ahli bukan statik
Serpihan kod berikut menunjukkan masalah ini:
punca masalah
<code class="language-csharp">namespace WindowsApplication1 { public partial class Form1 : Form { ... private static void SumData(object state) { ... setTextboxText(result); // 错误:非静态字段、方法或属性 } } }</code>
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 kaedahsebagai statik:
setTextboxText
<code class="language-csharp">public static void setTextboxText(int result)</code>
setTextboxText
Form1
setTextboxText
Buat contoh <code class="language-csharp">class Form1 { public static Form1 Instance; // 单例 ... private static void SumData(object state) { ... Instance.setTextboxText(result); } }</code>
Form1
Instance
Jika contoh sudah wujud, kaedah ini mungkin tidak terpakai. Instance = this;
Form1
<code class="language-csharp">private static void SumData(object state) { ... Form1 frm1 = new Form1(); frm1.setTextboxText(result); }</code>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!