"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا لا يمكن للطريقة الثابتة الوصول إلى الأعضاء غير المنتظمة في C#؟

لماذا لا يمكن للطريقة الثابتة الوصول إلى الأعضاء غير المنتظمة في C#؟

نشر في 2025-03-24
تصفح:748

خطأ وحل للطريقة الثابتة C# لا يمكن الوصول إلى الأعضاء غير المتطوعين

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

خطأ: مرجع كائن مطلوب

]

يوضح مقتطف الكود التالي هذه المشكلة:

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

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

سبب المشكلة

]

تشير رسالة الخطأ إلى أن الطريقة الثابتة sumData تحاول استدعاء عضو غير static setTextBoxText . لا يمكن للطريقة الثابتة الوصول إلى الأعضاء الثابتة فقط ، بينما يتطلب الوصول إلى الأعضاء غير المنتظمة إشارة إلى كائن الفئة التي ينتمي إليها.

حلول

هناك عدة طرق لإصلاح هذا الخطأ:

  1. قم بتعيين setTextBoxText
public static void setTextBoxText (int result)
public static void setTextboxText(int result)

    ثابتة مكالمة Singleton
  1. setTextBoxText فئة 1 { مثيل Form1 العام ؛ ... sumdata الفراغ الثابت الخاص (حالة الكائن) { ... مثيل. } }
  2. في مُنشئ
form1
class Form1
{
    public static Form1 Instance;   // 单例

    ...

    private static void SumData(object state)
    {
        ...
        Instance.setTextboxText(result);
    }
}
مثيل = this ؛

. إنشاء form1 في طريقة الاتصال:

  1. sumdata الفراغ الثابتة الخاصة (حالة الكائن) { ... form1 Frm1 = new form1 () ؛ frm1.settextboxtext (النتيجة) ؛ }
  2. إذا كان مثيل
form1
private static void SumData(object state)
{
    ...
    Form1 frm1 = new Form1();
    frm1.setTextboxText(result);
}

sumdata قم بتعيين طريقة الاتصال sumData

كطريقة مثيل غير static (ينتمي إلى
    form1
  1. ): private void sumdata (حالة الكائن) { ... setTextBoxText (النتيجة) ؛ }
عادة ما يكون هذا هو الحل الأفضل لأنه يحافظ على تغليف الكود وقابليته للصيانة.
 لمزيد من المعلومات ، يرجى الرجوع إلى وثائق MSDN. 
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3