سؤال

أرغب في تعيين نقطة توقف على سطر معين في رمز C# عندما يكون بعض المتغيرات الأخرى مساوية لقيمة محددة ، على سبيل المثال:

MyStringVariable == "LKOH"

كيف أقوم بذلك؟

حاولت النقر بزر الماوس الأيمن على أيقونة نقطة الإيقاف -> شرط ثم كتبت MyStringVariable == "LKOH" وقال Visual Studio إنه لا يمكن تقييمه.

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

المحلول

عينة من الرموز:

static void Main(string[] args) {
  string myvar;
  for (int ix = 0; ix < 10; ++ix) {
    if (ix == 5) myvar = "bar"; else myvar = "foo";
  }    // <=== Set breakpoint here
}

الحالة: myvar == "بار"

يعمل بشكل جيد.

نصائح أخرى

if (MyStringVariable == "LKOH") Debugger.Break();

ستحتاج إلى مساحة اسم System.Diagnostics

http://msdn.microsoft.com/en-us/library/system.diagnostics.debugger.break.aspx

تمامًا كما في الكود ، تحتاج إلى استخدام:

MyStringVariable == "LKOH"

المساواة المزدوجة هي المفتاح. بدون ذلك ، يقول إنه لا يمكن تقييمه لأن تعبيرك لا يقييم إلى منطقية.

يجب أن تكون قادرًا على إنجاز هذا العمل. هل تستخدم اسم مثيل التبادل في الحالة؟ يجب أن تكون الحالة مثل myExchange.Name == "LKOH" ليس Exchange.Name == "LKOH".

بالمناسبة ، باستخدام مشغل الواجب = بدلا من مشغل المساواة == ستعمل ولكنه سيضع الممتلكات ويضيع 1/2 ساعة من وقتك لمعرفة ما يجري بحق الجحيم. لقد ارتكبت هذا الخطأ بالأمس فقط.

المتغير الذي تختبره يجب أن يكون في نطاق عند نقطة الإيقاف.

var x = "xxx";
{ 
  var y = "yyy";
}

brak(); // x is in scope, y isn't

في حالتي ، لقد نسيت أنني كنت أقوم بتصحيح تطبيق VB.

في VB المساواة = ليس == مثل العديد من اللغات الأخرى ، وبالتالي فإن نقطة التوقف الشرطية تحتاج إلى أن تكون myString = "someValue" ليس myString == "someValue"

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