سؤال

في .صافي ، إذا صف يحتوي على العضو الذي هو كائن فئة ، يجب أن يكون العضو يتعرض الخاصية أو الأسلوب ؟

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

المحلول

إذا كل ما تقوم به هو تعريض مثيل كائن التي هي ذات الصلة إلى حالة الكائن الحالي يجب عليك استخدام خاصية.

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

نصائح أخرى

يجب أن استخدام خصائص أي شيء من الناحية النظرية يمثل الكائن الدولة ، طالما استرجاع ليست مكلفة بما فيه الكفاية العملية التي يجب تجنب استخدامه مرارا وتكرارا.

من MSDN:

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

  • استخدام خاصية عند الأعضاء البيانات المنطقية الأعضاء.في الأعضاء التالية الإعلانات, اسم خاصية لأنه منطقي الأعضاء من الطبقة.

    public string Name
    get 
    {
        return name;
    }
    set 
    {
        name = value;
    }
    
  • استخدام الأسلوب عندما:

    • هو عملية التحويل مثل الكائن.ToString.
    • وهذه العملية مكلفة بما فيه الكفاية أن كنت ترغب في التواصل مع المستخدم أنه ينبغي النظر في التخزين المؤقت نتيجة.
    • الحصول على قيمة الخاصية باستخدام أسلوب استرجاع القيمة الحصول على أن يكون الملحوظ الآثار الجانبية.
    • داعيا الأعضاء مرتين في الخلافة تنتج نتائج مختلفة.
    • أمر التنفيذ هو المهم.لاحظ أن نوع خصائص يجب أن تكون قادرة على أن تكون مجموعة واسترجاعها في أي أمر.
    • العضو هو ثابت ولكن بإرجاع القيمة التي يمكن تغييرها.
    • الأعضاء بإرجاع صفيف.الخصائص التي تعود المصفوفات يمكن أن تكون مضللة جدا.عادة ما يكون من الضروري العودة إلى نسخة من الداخلية مجموعة بحيث لا يمكن للمستخدم تغيير الحالة الداخلية.هذا إلى جانب حقيقة أن المستخدم يمكن بسهولة تفترض أنها مفهرسة الملكية يؤدي إلى عدم كفاءة رمز.في المثال التعليمات البرمجية التالي, كل مكالمة إلى أساليب الملكية بإنشاء نسخة من المصفوفة.ونتيجة لذلك ، 2n+1 نسخة من المصفوفة سيتم إنشاؤها في الحلقة التالية.

      Type type = // Get a type.
      for (int i = 0; i < type.Methods.Length; i++)
      {
         if (type.Methods[i].Name.Equals ("text"))
         {
            // Perform some operation.
         }
      }
      

يوضح المثال التالي الصحيحة استخدام الخصائص والأساليب.

    class Connection
    {
       // The following three members should be properties
       // because they can be set in any order.
       string DNSName {get{};set{};}
       string UserName {get{};set{};}
       string Password {get{};set{};}

       // The following member should be a method
       // because the order of execution is important.
       // This method cannot be executed until after the 
       // properties have been set.
       bool Execute ();
    }

وهذا غير ذي صلة لهذه المسألة.

يجب أن يكون العقار إذا كانت قيمة بعض التفاصيل حول حالة الكائن.

وينبغي أن يكون الأسلوب إذا كانت تنفذ بعض الإجراءات على الكائن.

عقار. A الخاصية هي في الأساس مجرد وسيلة "رخيصة". الحصول على أو تعيين مرجع كائن رخيصة جدا.

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

وخصائص قراءة وتعيين القيم إلى الحالات ضمن فئة.

وطرق تفعل شيئا مع البيانات المخصصة لفئة.

نظرة عامة

عموما, خصائص تخزين البيانات لكائن مثل اسم, والأساليب هي الإجراءات كائن يمكن أن يطلب منك إجراء مثل الخطوة أو تظهر.في بعض الأحيان أنها ليست واضحة والتي أعضاء الفئة يجب أن تكون الخصائص التي ينبغي أن تكون الأساليب -- البند طريقة جمع فئة (VB) مخازن و استرجاع البيانات و يمكن تنفيذها مفهرس الملكية.من ناحية أخرى ، سيكون من المعقول أن تنفذ البند كوسيلة.

بناء الجملة

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

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

ThisObject.ThisProperty(مؤشر) = NewValue

إذا كانت فئة الأعضاء يتم تطبيق طريقة قيمة تعديل يجب أن يتم تعديل باستخدام arguement:

ThisObject.ThisProperty(مؤشر NewValue)

أخطاء

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

وأنا الخلط حول استخدام الممتلكات والأسلوب قبل. ولكن الآن أنا أستخدم هذه القاعدة وفقا ل MSDN التوجيهي :

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

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