'类'是'类型'但是像'变量'一样使用

时间:2011-02-09 17:56:19

标签: c#

我正在编写一个应用程序,该应用程序使用指纹识别器捕获某人指纹的图像并将其保存在数据库中。

我正忙着将vb逻辑转换为c#,但我被困在这里......

在我的主要表单中,我有2个类:fingerPrints和fingerImage。

我的问题如下:

从我的fingerPrints类中,我需要引用fingerImage类。为清晰起见,这里有一些代码:

此方法派生自fingerPrint类,该类引用fingerImage类:

public byte[] getImageFromFinger(string finger)
        {
            foreach (fingerImage fi in fingerImage)
            {
                if (fi.Finger == finger)
                    return fi.Image;
            }
            return null;
        }

我的问题是我似乎无法解决的错误... fingerImage是'type'但是像'变量'一样使用。

我需要在课堂上循环10次,每次手指一次,但是我做错了,我觉得它很小。任何帮助将不胜感激。

此外,这里有一些来自我的fingerImage类的代码,以防万一...

public class fingerImage : frmFingerprintsMain
        {
            private byte[] _image;
            private string _finger;

            public fingerImage(byte[] image, string finger)
            {
                Image = image;
                Finger = finger;
            }

            public byte[] Image
            {
                get { return _image; }
                set { _image = value; }
            }

            public string Finger
            {
                get { return _finger; }
                set { _finger = value; }
            }
        }

4 个答案:

答案 0 :(得分:5)

您收到错误,因为您没有名为fingerImage的变量。但是,您有一个名为fingerImage的类型。

您可能需要从某个地方获取fingerImage的集合以进行迭代。

答案 1 :(得分:3)

一个类是类型;你似乎在想“单词”这个词是“对象”的同义词(你不能“循环”一个;你可以遍历一个可枚举的对象 ,但是)。

基本上,你需要的是代替:

foreach (fingerImage fi in fingerImage)

......是这样的:

foreach (fingerImage fi in fingerImages)

...其中fingerImagesfingerImage类的实例集合

究竟该集合在哪里,如果没有看到更多代码,我真的无法说出来。但我假设你有一个地方(可能是fingerImage[]?或List<fingerImage>?)。

答案 2 :(得分:2)

试试这个:

foreach (FingerImage fi in fingerImages)
{
    ....
}

请注意:

  • 您正在迭代的变量名称可能是某种集合,变量名称可能是复数(如果不是,则很可能应该是这样)。
  • 该课程应为Pascal案例,以遵循Microsoft naming conventions。您似乎也需要修复类定义。遵循命名约定可以减少混淆并使这样的错误更容易被发现。

我知道以下命名约定通常看似不必要的工作,但从长远来看,这将节省您的时间,特别是当您让其他人加入您的团队时。

答案 3 :(得分:2)

fingerImage

fingerImage fi

这两种类型是相同的,这不应该发生。后一个fingerImage,应该是一个集合。