-1

C# の初心者 エラーが何であるか疑問に思っただけで、エラーを理解できません。修正する必要はありません。間違いを知りたいだけです。エラー: 'Systems.Collections.Generic.List.BinarySearch(int,System.Collections.Generic.Icomparer)' に最適なオーバーロードされたメソッド マッチには無効な引数が含まれています Argument1: system.collections.generic.list から int に変換できません Argument2: int から system.collections.generic.icomparer に変換できません

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;enter code here
using System.Windows.Forms;

namespace LotoNumbers
{
    public partial class FrmLotto : Form
{
    // declare class level variables
    List<int> player = new List<int>(7);
    List<int> computer = new List<int>(6);

    public FrmLotto()
    {
        InitializeComponent();
    }

    // event method to generate player's numbers
    private void btnPlayer_Click(object sender, EventArgs e)
    {
        // declare and initalize local variables
        string display = "";

        // reset the winning number label before generating the player's numbers
        lblComputerNumber.Text = "00  00  00  00  00  00";

        // generate unique random numbers
        GenerateRandomNumbers(player);
        player.Sort();
        // build display string
        display = BuildDisplayString(player);

        // display winning number in label
        lblPlayerNumber.Text = display;
    }

    // method to generate computer's random numbers (the 'winning numbers')
    // and determine how many winning numbers
    private void btnComputer_Click(object sender, EventArgs e)
    {
        // declare and initalize local variables
        int winCount = 0;
        string display = "";

        // generate unique random numbers
        GenerateRandomNumbers(computer);

        // sort the array in ascending order
        computer.Sort();

        // build display string
        display = BuildDisplayString(computer);

        // display winning number in label
        lblComputerNumber.Text = display;

        // determine if this number matches any of the players numbers
        winCount = CompareTwoList(player, computer);

        // display the total winning numbers
        lblMatching.Text = winCount.ToString("D2");
    }

    private void GenerateRandomNumbers(List<int> numberList)
    {


        Random lucky = new Random();

        // generate unique random numbers
        for (int index = 0; index < numberList.Capacity; index++)
        {
            int temp = lucky.Next(1, 50);
            if (numberList.IndexOf(temp) < 0)
            {
                numberList.Add(temp);
            }
            else
            {
                index--;
            }
        }

    }

    private string BuildDisplayString(List<int> numberList)
    {
        // declare method variable
        string display = "  ";

        // loop through the array and build a display string
        foreach (int number in numberList)
            display += number.ToString("D2") + "  ";

        // return display string
        return display;
    }

    private int CompareTwoList(List<int> list1, List<int> list2)
    {
        // declare method variable
        int numberMatching = 0;

        // loop through each element in the first array looking for a match in the second array
        foreach (int value in list1)
        {
            if (player.BinarySearch(list2, value) >= 0)
                numberMatching++;  // a matching value is found
        }

        return numberMatching;
    }
}

}

4

2 に答える 2

2

あなたが望むように見えます:

if (list2.BinarySearch(value) >= 0)
    numberMatching++;  // a matching value is found

現在、List <int> .BinarySearch(int、IComparer <int>)を呼び出しています。なので、タイプエラーが発生しますvalueint

次のこともできることに注意してください。

int numberMatching = list2.Intersect(list1).Count();
于 2013-03-12T16:16:08.810 に答える
0

およびをパラメータとしてList<int>.BinarySearch()受け入れるオーバーロードはありません。MSDNを参照してくださいList<int>int

あなたが使用する必要がありますplayer.BinarySearch(value)

于 2013-03-12T16:16:33.177 に答える