سؤال

وأنا ترقية بعض ج # رمز لvb.net، حاليا في محاولة لمعرفة كيفية القيام بذلك ..

byte isEndReached = //get some data

if (isEndReached != 0)
{
   for (int y = 0; y < isEndReached ; y++)
   {
     //do some stuff
   }

}

ومحاولتي:

 Dim isEndReached As Byte = ''//getsomedata
 If Not isEndReached Is Nothing Then 
 For y As Byte = 0 To isEndReached - 1
     ''//do some stuff
 Next
 End If

والمشكلة هي أنا الحصول على الخطأ التالي:

'هل' المشغل لا يقبل المعاملات من نوع 'بايت. يجب أن تكون المعاملات إشارة أو أنواع nullable.

وكيف لي أن إصلاح هذا؟

وشكرا!

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

المحلول

ولا يمكنك استخدام Is مع أنواع القيمة. وبالمثل، Nothing له معنى مختلف لأنواع قيمة من لأنواع المرجعية. يمكنك فقط إرسال مثل هذا:

If isEndReached <> 0 Then

وأو من هذا القبيل:

If isEndReached <> Nothing Then

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

If isEndReached > 0 Then

وأو بدلا من ذلك أعلن بايت على السطر السابق، وبعد ذلك فقط حلقة في حين انها أقل من isEndReached:

Dim y As Byte
While y < isEndReached
    ''...
    y += 1
End While

وFor الخاص بك لا يكون لها نفس المعنى الدقيق مثل C # رمز سواء، ولكن يجب أن يكون في الواقع <م> أفضل match- كنت مقارنة بايت بايت بدلا من [إينتس] بايت.

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