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

本文关键字:应用于 索引 Torpedo Mezo 表达式 类型 | 更新日期: 2023-09-27 18:00:52

这只是一个非常快速的问题。我有一个名为"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 Mezo
{
    public int[,] mezo;
    public Mezo()                            // KONSTRUKTOR
    {
        mezo = new int[10, 10];        
        kitoltesUressel();          

    }

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

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

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

下面是一个行为类似数组的类的简单代码:

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"关键字。

你可以在这里查看更多关于索引的信息。

编辑:

现在更新了关于你的Mezo类的新信息,给你错误的代码应该是这样的:

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

因为您正在传递Mezo的一个实例,该实例包含名为Mezo的数组。不能将类本身的实例当作锯齿状数组属性来使用。