2012-03-13 7 views
-3

私はこの配列 で昇順に確認しようとしているが、foreachの私は、forループを使用して、第2の部分をやった昇順ますforeach

foreach (double d in dSize) 
     { 

      if (dSize.ToString() != null) 
      { 
       double dSize1; 
       string str1 = dSize.ToString(); 

       bool success1 = double.TryParse(str1, out dSize1); 
       if (dSize < 0.0) 
       { 
        errMsg1 = " data grid should contain number >= 0"; 
       } 
       //else 
       //{ 
       // errMsg1 = " data grid must be entered"; 
       //} 
      } 


       *if (inputs.dSize[rowCount] <= inputs.dSize[rowCount - 1]) 
       { 
        errMsg = "value in row " + (rowCount + 1) + " should be greater than the value in row " + rowCount; 
       } 
      }* 
      swRpt.WriteLine(errMsg); 
     } 

を使用する方法がわからないのです。 ... foreachの

+0

'for'ループはどこですか? (あなたは2番目の部分がforループを使っていると言っています) – Keith

+0

コメントアウトされていますか?アスタリスクは何ですか? –

+0

forループを使用すると何が問題になりますか?それがあなたのために働いているなら、なぜそれを変更しますか? –

答えて

2

それを変更したいあなたはただ一回の反復から次へ前の値を覚えておく必要があります。

Double lastDouble = null; 
foreach(double d in dSize) { 
    if ((lastDouble != null) && (lastDouble > d)) { 
     errMsg = "value out of sequence"; 
     break; 
    } 
    lastDouble = d; 
} 

が、その後、あなたがエラーの行番号を失ってしまった。このためのforeachを使用しての問題は、(生のイテレータではなく)あなたが最初の値のための特別なケースを必要とすることです。最初のエントリの最後の値をプライムし、LINQを使用してスキップすることもできます

double lastDouble = dSize.First(); 
foreach(double d in dSize.Skip(1)) { 
    if (lastDouble > d) { 
     errMsg = "value out of sequence"; 
     break; 
    } 
    lastDouble = d; 
} 
1

なぜに

for(int i = dSize.Length-1; i>=0;i--) 
    { 
     double d = dSize[i]; 
     ... 
     ... 
     ... 
    }