0

foreachステートメントを使用して、配列全体を検索するために作成したプログラムを取得できるかどうかを確認しようとしていました。これは、事前設定されたサイズがなく、推測ゲームをプレイしたくないためです。 。このコードブロックを試しましたが、「タイプ'string'を'int'に暗黙的に変換することはできず、'if(query == search [k])という行を指していると表示されます。

それが何について話しているのか正確にはわかりませんが、誰かが助けてくれますか?ありがとうございました。

    private void findLast_Click(object sender, EventArgs e)
    {
        query = textBox2.Text;
        search = File.ReadAllText(fileName).Split(new string[] { "\n", "\r\n", ":" }, StringSplitOptions.RemoveEmptyEntries);
        foreach (string k in search)
        {
            if (query == search[k])
            {
                MessageBox.Show("Match");
            }
            else
                MessageBox.Show("No Match");
        }
    }
4

4 に答える 4

3

各ループには、すでにオブジェクトがあります。

private void findLast_Click(object sender, EventArgs e)
    {
        query = textBox2.Text;
        search = File.ReadAllText(fileName).Split(new string[] { "\n", "\r\n", ":" }, StringSplitOptions.RemoveEmptyEntries);
        foreach (string k in search)
        {
            if (query == k)
            {
                MessageBox.Show("Match");
            }
            else
                MessageBox.Show("No Match");
        }
    }
于 2012-12-06T21:52:28.963 に答える
2

kは文字列です。したがって、配列のインデックスとして使用することはできません。query == k代わりに試してください。

于 2012-12-06T21:51:19.750 に答える
1

テストをに変更します

if (query == k)

使用している構文は単純なforループ用です

for(int k; k < search.Length; k++)
{
   if (query == search[k])
       .....
} 
于 2012-12-06T21:51:35.713 に答える
1

C#はJavaScriptではありません...foreachインデックスではなく要素の値を提供します:

 foreach (string currentItem in search)
 {
    if (query == currentItem)
    {...
于 2012-12-06T21:52:59.550 に答える