سؤال

وأنا أفعل

static bool isWorking
    {
        get { return _isWorking; }
        set {
            myform.treeView1.Enabled = !value;
            _isWorking = value;
        }
    }

ووالتنقل خلال المصحح يظهر يتوقف عند خط المجموعة الأولى. بعد محاولة هذا الخط بدلا

set { myform.treeView1.Enabled = !(_isWorking = value); }

وأرى أن يتم تعيين isWorking لكن myform.treeView1.Enabled ليست كذلك. ماذا يحدث؟

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

المحلول

وماذا تقصد ب "المصحح يظهر أنه توقف"؟ هل من المحتمل أن myform لاغيا، أو myform.treeView1 باطل؟

وأنا لا يمكن أن نتذكر <م> بالضبط ترتيب التقييم في هذه الحالة، ولكن يمكن أن يفسر الأعراض كنت واصفا. معرفة لماذا المصحح "توقف" أمر بالغ الأهمية بالرغم من ذلك. والاحتمال الآخر هو أنك تحاول الوصول إلى واجهة المستخدم من موضوع عدم UI، والذي من شأنه أن يمنع الاحالة إلى Enabled من العمل بشكل صحيح.

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

string line;
while ( (line = reader.ReadLine()) != null)

وأنا أعتبر ذلك فحسب مقبول لأنه أمر شائع إلى حد معقول. في هذه الحالة يبدو حقا مثلك <م> قد يعني "==" بدلا من "=".

نصائح أخرى

ولأن (_isWorking = قيمة) ترجع دائما صحيحة. إذا كنت أكتب:

myform.treeView1.Enabled = !(_isWorking == value);

وهي تعمل مثل: إذا isWorking تساوي قيمة ثم تعطيل تريفيف. ولكن في حالة كنت - لا

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