2

次のコードを使用して、ファイルパスが有効かどうかを確認しようとしています

foreach (int i in UniqueRandom(0, 4))
{
    var wbImage = getCharBitmap(c, rndFolder, i);
}

このUniqueRandomメソッドは、0 から 4 までの反復しない乱数を生成します。各数値iはファイル名を表し、存在する場合と存在しない場合があります。ファイルが存在する場合、getCharBitmapメソッドはWritableBitmapオブジェクトを返します。それ以外の場合は null を返します。

ラムダ式を統合して、メソッドが null を返すかどうかを確認し、null でない場合は、i値を記憶してすぐにforeachループを終了したいと考えています。

最小限のコードでこれを効率的に行うにはどうすればよいでしょうか?

4

1 に答える 1

2

試す

var firstExisting = UniqueRandom(0, 4)
   .Select(i => new
        {
            Bitmap = GetCharBitmap(c, rndFolder, i),
            Number = i
        })
   .FirstOrDefault(x => x.Bitmap != null);

if (firstExisting != null)
{
    int j = firstExisting.Number;
}

またはLINQなしで同じ:

private static int FirstExisting()
{
    foreach (int i in UniqueRandom(0, 4))
    {
        var wbImage = GetCharBitmap(c, rndFolder, i);
        if (wbImage != null)
        {
            return i;
        }
    }
    throw new Exception("No existing found"); // or return say -1
}
于 2013-03-30T05:52:15.273 に答える