Ich war mit EMGUCV Programmierung in C# versuchen, wenn ich in diesen Fehler lautete:C# Kann nicht als ref passieren
Fehler 1 kann nicht ‚currentFrameBlob‘ als ref oder out-Argument übergeben, da es sich um eine ‚foreach Iterationsvariable ist '
Fehler 2 Kann nicht passieren ‚currentFrameBlob foreach Iterationsvariable‚‘als ref- oder out-Argument, weil es sich um eine‘
es wird in diesem Codeblock.
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);
}
}
ich über den Fehler zu lesen und es scheint mir, dass dies einer jener Macken von C# ist. Was ist der effizienteste Weg, um mit dieser Art von Fehlern umzugehen? Im Moment fürchte ich mich vor Änderungen, da ich keine Ahnung habe, wie ich es lösen kann, ohne es noch schlimmer zu machen.
erste Frage zu beantworten - brauchen Sie wirklich, diese Dinge mit Bezug zu vorbei? –
Mein Gott, Sie benutzen 'ref' überall –
Sie müssen o' ref' lesen und wie und wann Sie sie auch zeigen, wo und wie Sie die 'existingBlobs && currentFrameBlobs' deklarieren Ich glaube wirklich nicht, dass Sie müssen sie als "ref" – MethodMan