سؤال

في C# ما هو الفرق بين:

public static class ClassName {}

و:

public class ClassName {}
هل كانت مفيدة؟

المحلول

لا يمكن إنشاء فئة ثابتة ، ويمكن أن تحتوي فقط على أعضاء ثابتة. وبالتالي ، فإن الدعوات لفئة ثابتة هي: MyStaticClass.MyMethod(...) أو MyStaticClass.MyConstant.

يمكن إنشاء فئة غير ثابتة وقد تحتوي على أعضاء غير منتظمين (منشئات مثيلات ، مدمرة ، فهرس). لا يمكن استدعاء عضو غير منتظم في فئة غير منتظمة إلا من خلال كائن:

MyNonStaticClass x = new MyNonStaticClass(...);
x.MyNonStaticMethod(...);

نصائح أخرى

أولاً ، سأل تعليق على إجابة عما يعنيه "ثابت". بمصطلحات C# ، تعني "Static" "المتعلقة بالنوع نفسه ، بدلاً من مثيل من النوع." يمكنك الوصول إلى عضو ثابت (من نوع آخر) باستخدام اسم النوع بدلاً من مرجع أو قيمة. فمثلا:

// Static method, so called using type name
Guid someGuid = Guid.NewGuid();
// Instance method, called on a value
string asString = someGuid.ToString();

الآن ، فصول ثابتة ...

عادة ما تستخدم الفصول الساكنة كطبقات "فائدة". مثال الكنسي ربما هو System.Math. ليس من المنطقي إنشاء مثيل للرياضيات - إنه فقط ". بعض القواعد (كلاهما "يمكن" و "لا يمكن"):

  • الطبقات الثابتة تستمد دائمًا من object. لا يمكنك تحديد نوع أساسي مختلف ، أو جعل الفئة الثابتة تنفذ واجهة.
  • لا يمكن أن يكون لدى الفئات الثابتة أي أعضاء مثيل - يجب أن تكون جميع المتغيرات والأساليب وما إلى ذلك ثابتة.
  • لا يمكن للفئات الثابتة إعلان أي منشئات مثيلات ومترجم لا إنشاء مُنشئ بدون معلمة افتراضيًا. (قبل أن تأتي الفصول الساكنة في C# 2.0 ، غالبًا ما يقوم الناس بإنشاء فئة مجردة مع مُنشئ خاص ، مما منع التثبيت. لا حاجة هنا.)
  • الفصول الساكنة مجردة ضمنية (أي أنها تم تجميعها إلى IL التي تصف فئة مجردة) ولكن لا يمكنك إضافة ملف abstract المعدل نفسك.
  • يتم إغلاق الفصول الساكنة ضمنيًا (أي أنها تم تجميعها إلى IL التي تصف فئة مختومة) ولكن لا يمكنك إضافة ملف sealed المعدل نفسك.
  • فصول ثابتة مايو كن عاما.
  • فصول ثابتة مايو تكون متداخلة ، إما في الطبقات غير المنتظمة أو الثابتة.
  • فصول ثابتة مايو لديك أنواع متداخلة ، إما غير منتظمة أو ثابتة.
  • يمكن أن تحتوي الفئات غير المستقلة فقط من المستوى الأعلى على طرق تمديد (C# 3.0).

لا يمكن أيضًا مورث الفئة الثابتة ، في حين يمكن ورث فئة غير قاسية مع أعضاء ثابتة.

public static class ClassName {}

يشبه الفصل الثابت تمامًا متغيرًا عالميًا: يمكنك استخدامه في أي مكان في الكود الخاص بك دون إنشاء مثيل له. فمثلا: classname. بعد مشغل DOT ، يمكنك استخدام أي خاصية أو وظيفة منه.

 public class ClassName {}

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

 ClassName classNameObject = new ClassName(); 

جميع الأساليب/الخصائص في فئة ثابتة يجب كن ثابتًا ، في حين أن الفئة "العادية" يمكن أن تحتوي على مزيج من المثيل والطرق الثابتة.

لا يمكنك إنشاء إنشاء (إنشاء كائنات) فئة ثابتة. ويمكن أن تحتوي فقط على أعضاء ثابتة.

مثال: System.Math

يمكن أن تحتوي الطبقة الثابتة على أعضاء ثابتة فقط.

يمكن استخدام العضو الثابت دون إنشاء فصل دراسي أولاً.

يتم استخدام الفئات والأعضاء الثابتة لإنشاء بيانات وطرق يمكن الوصول إليها دون إنشاء مثيل (باستخدام new الكلمة الرئيسية ، لا يمكن أن يكون لها مُنشئ) للفئة.

يمكن الإعلان عن الطبقات الثابتة عندما لا يكون هناك اعتماد على هوية الكائن الخاصة به ، لذلك يجب أن تحتوي الطبقة الثابتة على أعضاء ثابتة فقط.

يتم تحميل هذه الفئات بواسطة CLR عندما يتم تحميل البرنامج أو مساحة الاسم التي تحتوي على الفصل.

كما أنها مختومة ، لا يمكن موروثة من.

http://www.javaworld.com/javaworld/javaqa/1999-08/01-qa-static2.html - مقال جيد جدا حول هذا. هذا لجافا. لكنني أعتقد أن المفهوم يجب أن يكون نفسه في C# أيضًا.

متغير ثابت في ج

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

وظيفة ثابتة في جوظائف غير مرئية للوظائف في ملفات أخرى.

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

فئة ثابتةلا يمكن لهذه الفئة إنشاء كائنات

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top