سؤال
وأنا ترقية بعض ج # رمز ل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- كنت مقارنة بايت بايت بدلا من [إينتس] بايت.