2016-09-06 1 views
-1

Я пытался из программирования на C# с EMGUCV, когда я столкнулся с этой ошибкой:C# Не могу передать, как исх

Ошибка 1 Не удается передать «currentFrameBlob» как исх или из аргументов, потому что это «Еогеасп переменная итерации '

Ошибка 2 не удается передать „currentFrameBlob“ как исх или из аргументов, потому что это „Еогеасп переменная итерации“

он расположен в этом блоке кода.

public void matchCurrentFrameBlobsToExistingBlobs(ref List<Blob> existingBlobs, ref List<Blob> currentFrameBlobs) 
{ 
    foreach (Blob existingBlob in existingBlobs) 
    { 
     existingBlob.blnCurrentMatchFoundOrNewBlob = false; 
     existingBlob.predictNextPosition(); 
    } 

    foreach (Blob currentFrameBlob in currentFrameBlobs) 
    { 
     int intIndexOfLeastDistance = 0; 
     double dblLeastDistance = 1000000.0; 
     for (int i = 0; i <= existingBlobs.Count() - 1; i++) 
     { 
      if ((existingBlobs[i].blnStillBeingTracked == true)) 
      { 
       double dblDistance = distanceBetweenPoints(currentFrameBlob.centerPositions.Last(), existingBlobs[i].predictedNextPosition); 

       if ((dblDistance < dblLeastDistance)) 
       { 
        dblLeastDistance = dblDistance; 
        intIndexOfLeastDistance = i; 
       } 
      } 
     } 

     if ((dblLeastDistance < currentFrameBlob.dblCurrentDiagonalSize * 0.5)) 
     { 
      addBlobToExistingBlobs(ref currentFrameBlob, ref existingBlobs, ref intIndexOfLeastDistance); 
     } 
     else 
     { 
      addNewBlob(ref currentFrameBlob, ref existingBlobs); 
     } 
    } 

Я прочитал об ошибке, и мне кажется, что это одна из тех причуд C#. Каков наиболее эффективный способ борьбы с этим типом ошибок. Сейчас я очень боюсь вносить изменения, так как у меня очень мало идей о том, как решить проблему, не делая этого хуже.

+6

Первый вопрос ответить - действительно ли вы должны проездом эти вещи по ссылке? –

+0

Мой бог, вы используете 'ref' всюду –

+0

вам нужно прочитать o' ref' и как и когда их использовать, также покажите, где и как вы объявляете 'existingBlobs && currentFrameBlobs', я действительно не думаю, что вы необходимо объявить их как 'ref' – MethodMan

ответ

-3

Простейшее фикс:

foreach (Blob currentFrameBlob2 in currentFrameBlobs) 
{ 
    Blob currentFrameBlob = currentFrameBlob2; 
    //.... 
+0

Да, но реальный вопрос, который нужно задать, - это почему OP передает что-либо, обращаясь к OP, чтобы читать вверх по ключевому слову 'ref в msdn' – MethodMan

+0

Но это было не то, что он просил. Он боялся больших перемен. –

+0

Боясь, что вы никуда не зайдете в программировании, по крайней мере, до 2997 года, когда они начнут искать отставных программистов C# winforms для решения проблем Y3k. –

Смежные вопросы