【发布时间】:2016-01-01 03:36:23
【问题描述】:
我有一个函数,它只需要返回当前显示在List<Bitmap> 中的图片框中的图像的索引,称为images。
它是一个名为displayImageIndex() 的int 函数,我最初尝试这样运行它:
public int displayImageIndex()
{
//index to return to function
int displayIndex = 0;
//access all images in list
for (int i = 0; i < imagePaths.Count; ++i)
{
//matches image in picturebox
if (picboxImage.ImageLocation == imagePaths[i])
{
//get index of image
displayIndex = imagePaths.IndexOf(imagePaths[i]);
}
}
return displayIndex;
}
这个编译但总是返回 displayIndex 为 0,尽管在程序的其余部分正在工作时显然找到了图像。然后我尝试这样:
public int displayImageIndex()
{
//value to return to function
int displayIndex;
//access all images in list
for (int i = 0; i < imagePaths.Count; ++i)
{
//matches image in picturebox
if (picboxImage.ImageLocation == imagePaths[i])
{
//get index of image
displayIndex = imagePaths.IndexOf(imagePaths[i]);
return displayIndex;
}
}
}
这给了我一个错误,告诉我“并非所有代码路径都返回一个值”。我试图通过在if 语句中添加else 来解决此问题,但这给了我一个警告,即循环可能包含无法访问的代码。
基本上,但是我尝试运行它时会遇到某种错误。
我不知道该怎么做,因为该函数绝对总是会找到一个值(picbox 上的图像总是来自images 列表中的一个),我只需要一种始终返回该值的有效方法,但我不知道如何将其放入函数中。
任何帮助或正确方向的观点都会很棒,提前谢谢!
标记
【问题讨论】:
-
一些问题。为什么要使用预增量
++i?你为什么使用函数indexof?i不是你的索引吗? -
您确定 ImageLocation 存在于 imagePaths 中吗?也许图像被移动了?另外,为什么要使用 IndexOf? “我”还不够好吗?