[c#] لا عامل زيادة في VB.net



1 Answers

ببساطة لأن المصممين اعتقدوا أن i++ غير ضروري عندما يكون لديك i += 1 .

للحلقات لا تحتاج إلى واحد ، لذلك لا تفقد أي شيء.

انها Visual Basic بعد كل شيء ... لماذا جعلها معقدة؟

Question

أنا جديدة إلى حد ما vb.net وواجهت هذه المسألة أثناء تحويل حلقة for في C # إلى VB.net أدركت أن مشغلي الزيادة غير متوفرة في vb.net (++ و -) بينما كنت قادراً على القيام بذلك شيء مثل cnt +=1

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

آمل أن يتمكن أحد الأشخاص هنا من شرح سبب عدم نجاح ذلك بالطريقة نفسها التي يعمل بها في C #. (آمل أن يكون هذا صحيحا أيضا كما هو الحال في لماذا لدينا == في C # للمقارنة)




كمثال على الفرق بين التعبير والعبارة في VB ، في VB ، ينتج عن ذلك خطأ في المحول البرمجي حيث أن count += 1 تزاد count 1 ، لكن count += 1 التعبير الكامل count += 1 لا يُرجع نتيجة ، لذلك لا يمكن يمكن استخدامها كمعلمة.

Dim count As Integer = 0
Console.WriteLine(count += 1)  ' compiler error

عليك القيام بذلك بدلا من ذلك

Dim count As Integer = 0
count += 1
Console.Writeline(count)

بالطبع ينطبق نفس الشيء على استخدام += عامل في سلسلة.

ماذا يعني "في VB ، العبارة لا يمكن أن يكون مجرد تعبير" يعني؟

  • يتطلب برنامج التحويل البرمجي VB أن يتم استهلاك النتائج في بعض المهام أو العمليات الأخرى.
  • وبسبب هذا ، لا ينتج عن عملية التعيين في VB نتيجة. إذا كان مترجم VB لا يسمح له بالوقوف بمفرده كبيان (يتطلب المحول أن يتم استهلاك النتائج).
  • وبالتالي يمكن استخدام التعيينات في VB كبيانات ، ولكن ليس كتعبيرات. هذا لا يمكنك استخدام عبارة الواجب كمعلمة إلى أسلوب أو نتيجة متوسطة.
  • في C # تقوم عملية تخصيص بإعطاء قيمة. وبالتالي من أجل أن تكون التعيينات قائمة بذاتها كبيانات ، لا يحتاج المترجم إلى استهلاك جميع النتائج.
  • النتيجة الطبيعية في C # هي أن أي عملية أخرى تنتج نتيجة يمكن أن تقف وحدها كبيان. 2 + 2 على سبيل المثال ينتج النتيجة 4 ويمكن أن يقف وحده كبيان ، بينما في VB لا يمكن.

إجابة مبسطة على "لماذا لا تتوفر عوامل التشغيل قبل وبعد الزيادة في VB؟"

count++ يقول ، أولاً إرجاع قيمة count ، ثم count التزايد (ولا ترجع قيمة الواجب count ).
في هذه الحالة لا يتم استخدام القيمة المتزايدة (يتم استخدام القيمة قبل زيادة). كما ذكر من قبل ، يتطلب مترجم VB استخدام أو تعيين قيم العمليات.

يقول ++count ، أول count الزيادة ، ثم إرجاع قيمة الواجب count .
في هذه الحالة ، يتم إرجاع قيمة تعيين +1 إلى count كقيمة التعبير. كما ذكر من قبل ، لا تنتج المهام في VB نتيجة.
وبالتالي سيكون هناك بعض الألم الشديد في تنفيذ هذه المشغلين في VB.




Related