Я пытался из программирования на 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#. Каков наиболее эффективный способ борьбы с этим типом ошибок. Сейчас я очень боюсь вносить изменения, так как у меня очень мало идей о том, как решить проблему, не делая этого хуже.
Первый вопрос ответить - действительно ли вы должны проездом эти вещи по ссылке? –
Мой бог, вы используете 'ref' всюду –
вам нужно прочитать o' ref' и как и когда их использовать, также покажите, где и как вы объявляете 'existingBlobs && currentFrameBlobs', я действительно не думаю, что вы необходимо объявить их как 'ref' – MethodMan