如何解决方法的无重载需要 1 个参数 C#

本文关键字:重载 参数 何解决 解决 方法 | 更新日期: 2023-09-27 18:35:59

我有一个带有数组的类,它是这样的。

public class CardList
{
    public string[] GetImages() {
        // Create a new instance of a string array
        string[] images = new string[108];
        images[1] = @"C:'Resources'ALLCARDS'YellowCards'0 Yellow.png";
        ...
        ...
        images[107] = @"C:'Resources'ALLCARDS'BlackCards'Draw4.png";
        return images;
    }
}

我正在尝试将数组调用到另一个类并将其分配给图片框。这就是我所做的..

private void pictureBox16_Click(object sender, EventArgs e)
{
    CardList List = new CardList();
    List.GetImages();
    pictureBox1.ImageLocation = List.GetImages(1);
}

但是我在"List.GetImages(1);"下面有红线,上面写着"方法没有重载需要 1 个参数"。

如何解决方法的无重载需要 1 个参数 C#

我想你想做这样的事情:

string[] images = List.GetImages();
pictureBox1.ImageLocation = images[1];

List.GetImages(1)行上,您正在尝试调用 GetImages() 函数,当您的函数不带任何函数时,将1作为参数传递。您的代码应如下所示:

    string[] images = List.GetImages();
    pictureBox1.ImageLocation = images[1];

出现此错误的原因是 GetImages 方法没有任何参数。查看签名:

public string[] GetImages() // nothing between () => no parameters

该方法没有参数,并返回一个数组。可以使用 0 访问该数组中的第一项(在 C# 中,索引从 0 开始)。

string[] images = GetImages();
string first = images[0];

最好检查数组是否确实有你想要获取的索引,你可以通过检查Length来做到这一点:

string[] images = GetImages();
if (images != null && images.Length > 0)
{
    string first = images[0];
}

您的getimages()函数不带任何参数,并且您正在尝试传入 1。因此,除非您定义另一个采用int参数(方法重载)的getimages()函数,否则您将获得错误"no overload for method takes 1 arguments"

您可以通过以下方式重载GetImages方法:

public string[] GetImages(int index) {
    // Create a new instance of a string array
    string[] images = new string[108];
    images[1] = @"C:'Resources'ALLCARDS'YellowCards'0 Yellow.png";
    ...
    ...
    images[107] = @"C:'Resources'ALLCARDS'BlackCards'Draw4.png";
    if(images.Length > index - 1)
        return images[index];
    return null;
}