【问题标题】:Cannot apply indexing with [] to an expression of type Torpedo.Mezo无法将带有 [] 的索引应用于 Torpedo.Mezo 类型的表达式
【发布时间】:2014-04-30 12:57:47
【问题描述】:

只是一个非常快速的问题。 我有一个名为“Mezo.cs”的类,它基本上是一个“公共 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 随机填充副本。

【问题讨论】:

  • 你能贴出给出错误信息的代码吗?
  • 是我还是标题没有语法意义?如果我是对的,那甚至不能是确切的错误信息。但是是的,看代码是必须的。
  • 好的,所以 Mezo 是你的类,但它本身不是锯齿状数组;因此不允许索引。你的类中有一个参差不齐的数组来引用它自己吗?
  • 我里面没有锯齿状数组。真的不知道我为什么要拥有它。我自己发布课程。
  • @user3576186 更新了我的代码示例以更详细地解释您的错误:)

标签: c# class object indexing


【解决方案1】:

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

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

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 的数组。 您不能像使用锯齿状数组属性一样使用类本身的实例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-07
    • 2011-04-06
    • 2019-03-20
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 2019-12-08
    相关资源
    最近更新 更多