无法使用[]将索引应用于Torpedo.Mezo类型的表达式

时间:2014-04-30 12:57:47

标签: c# class object indexing

这是一个非常快速的问题。 我有一个名为" Mezo.cs"这基本上是一个' public int [,]'。 此类的特定副本是包含1或0的int [,]。 我想找到1。 所以在主程序中我用fors迭代它但我得到标题中的错误。 任何帮助将不胜感激。

static void WriteShips(Mezo mezo, StreamWriter SW)
    {
        for (int i = 0; i < 10; i++)
        {
            for (int j = 0; j < 10; j++)
            {
                if (mezo[i, j] == 1)
                {
                    SW.WriteLine(i.ToString(), j.ToString());
                }

            }
        }

    }

这是在战舰计划中,我想基本上想要在txt中保存船只的坐标。 mezo [i,j]给出错误

MEZO CLASS:

class Mezo
{
    public int[,] mezo;

    public Mezo()                            // KONSTRUKTOR
    {
        mezo = new int[10, 10];        
        kitoltesUressel();          


    }

kitoltesUressel()是无关紧要的,只是用1和0随机填充副本。

1 个答案:

答案 0 :(得分:0)

为了使用带索引的类实例(非常类似于框架中的任何集合),您需要具有一个与索引管理器类似的属性。

这是一个类似于数组的类的简单代码:

public class MyIndexedClass
{
    private string[] _values = new string[]
    {
        "hello",
        "hi",
        "good morning",
        "long time no see"
    };
    public string this[int index]
    {
        get
        {
            Console.WriteLine("Index called with argument value " + index);
            return _values[index];
        }
        set
        {
            Console.WriteLine("Index called with argument value " + index + " and value " + value );
            _values[index] = value;
        }
    }
}

在我的示例中,使用代码myIndexedClassInstance[0];返回包含“hello”的字符串。

我猜你的“Mezo”类里面包含一个锯齿状数组,但没有使用“this”关键字。

您可以查看有关索引here的更多信息。

修改

现在更新了有关您的Mezo类的新信息,给您错误的代码应如下所示:

if (mezo.mezo[i, j] == 1)
{
   SW.WriteLine(i.ToString(), j.ToString());
}

因为你传递的是Mezo的一个实例,它是包含名为mezo的数组的实例。 您不能使用类本身的实例,就好像它是锯齿状数组属性一样。