として渡すことができませんforeachの反復変数 『C#が、私はこのエラーに遭遇したとき、私はEMGUCVとC#でプログラミングをしようとしていたREF
それは、このコードブロックに位置している『それがあるので、refまたはout引数として』currentFrameBlob」を
エラー2が通過することはできません』。
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#のそれらの癖の1つであると思われます。このタイプのエラーを処理する最も効率的な方法は何ですか。今私はそれを悪化させることなく解決する方法についてはほとんど考えていないので、変更を加えることを非常に恐れています。
最初の質問にはお答えします - あなたは本当に、参照することにより、これらの事を渡すことが必要なのですか? –
私の神様、あなたはどこでも 'ref'を使っています –
' ref'を読んで、それらを使う方法とタイミングを表示します。 'existingBlobs && currentFrameBlobs'をどこでどのように宣言していますか?それらを 'ref 'として宣言する必要があります – MethodMan