سؤال

في جافا أستطيع أن أكتب:

public class Foo {

    public static Foo DEFAULT_FOO;

    static {
        DEFAULT_FOO = new Foo();
        // initialize 
        DEFAULT_FOO.init();
    }

    public Foo() {
    }

    void init() {
        // initialize
    }
}

كيف يمكنني الحصول على نفس الوظيفة في C# (حيث تتم تهيئة الأعضاء الثابتة قبل الاستخدام)؟وإذا كان هذا أمرًا سيئًا لمحاولة القيام به، فما هو النهج الأفضل؟

هل كانت مفيدة؟

المحلول

يمكنك استخدام منشئ ثابت، مثل هذا:

public class Foo
{
  static Foo()
  {
     // inits
  }
}

هنا مزيد من المعلومات.

الحد الأدنى:إنه مُنشئ بدون معلمات مع static الكلمة الأساسية المرفقة به.يعمل تمامًا مثل الكتلة الثابتة في Java.

يحرر: شيء آخر يجب أن نذكره.إذا كنت تريد فقط إنشاء شيء بشكل ثابت، فيمكنك تهيئة متغير بشكل ثابت دون الحاجة إلى المُنشئ الثابت.على سبيل المثال:

public class Foo
{
  public static Bar StaticBar = new Bar();
}

ضع في اعتبارك أنك ستحتاج إلى مُنشئ ثابت إذا كنت تريد استدعاء أي أساليب على Bar أثناء التهيئة الثابتة، لذا فإن مثالك الذي يستدعي Foo.Init() لا يزال يحتاج إلى منشئ ثابت.أنا فقط أقول أنك لست محدودًا، هذا كل شيء.:)

نصائح أخرى

وثابت لا تزال الكلمة في C #:

public class Foo {
    public static Foo DefaultFoo;

    static Foo {
        DefaultFoo = new Foo();
        // initialize 
        DefaultFoo.init();
    }

    public Foo() {
    }

    void init() {
        // initialize
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top