كيفية تحديد الثوابت في Visual C# مثل #define في C؟

StackOverflow https://stackoverflow.com/questions/1807785

  •  05-07-2019
  •  | 
  •  

سؤال

في C يمكنك تعريف الثوابت مثل هذا

#define NUMBER 9

بحيث أينما ظهر الرقم في البرنامج يتم استبداله بالرقم 9.لكن Visual C# لا يفعل هذا.كيف يتم ذلك؟

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

المحلول

public const int NUMBER = 9;

وكنت بحاجة إلى وضعه في فئة في مكان ما، وسوف ClassName.NUMBER استخدام

نصائح أخرى

وأنت لا تستطيع أن تفعل هذا في C #. استخدام const int بدلا من ذلك.

static class Constants
{
    public const int MIN_LENGTH = 5;
    public const int MIN_WIDTH  = 5; 
    public const int MIN_HEIGHT = 6;
}

// elsewhere
public CBox()
{
    length = Constants.MIN_LENGTH; 
    width  = Constants.MIN_WIDTH; 
    height = Constants.MIN_HEIGHT;  
}

كيفية: تحديد الثوابت في C # على MSDN:

<اقتباس فقرة>   

في C # لالمعالج #define   التوجيه لا يمكن أن تستخدم لتحديد   الثوابت في الطريقة التي عادة   المستخدمة في C و C ++.

في لغة ج: #define (على سبيل المثال#تعريف العداد 100)

في لغة التجميع: يساوي (على سبيل المثالعداد المعادلة 100)

بلغة #C: حسب مرجع msdn:انت تستخدم #define لتحديد رمز.عند استخدام الرمز كتعبير تم تمريره إلى #if التوجيه، سيتم تقييم التعبير إلى صحيح، كما يوضح المثال التالي:

# define DEBUG

ال #define لا يمكن استخدام التوجيه للإعلان عن قيم ثابتة كما يحدث عادةً في C وC++.من الأفضل تعريف الثوابت في C# كأعضاء ثابتين في فئة أو بنية.إذا كان لديك العديد من هذه الثوابت، ففكر في إنشاء فئة "ثوابت" منفصلة للاحتفاظ بها.

في C #، في مكتبة MSDN، لدينا "CONST" الكلمة التي لا عمل الكلمة "تعريف #" في لغات أخرى.

و"... عندما يصادف المترجم معرف ثابت في C # شفرة المصدر (على سبيل المثال، أشهر)، فإنه يستبدل قيمة حرفية مباشرة إلى لغة وسيطة (IL) رمز أنها تنتج". ( https://msdn.microsoft.com/en-us/library/ms173119. ASPX )

وتهيئة الثوابت في وقت إعلان أنه ليس هناك أي تغيير عليها.

public const int cMonths = 12;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top