如何从类对象打印出数组,在构造函数中初始化

时间:2016-07-26 14:55:04

标签: c# indexer

class Program
{
    static void Main(string[] args)
    {
        IntIndexer myIntIndexer = new IntIndexer(5);
        for (int i = 0; i < 5; i++)
        {
            Console.WriteLine(myIntIndexer[i]);
        }
    }
}
class IntIndexer
{
    private string[] myData;

    public IntIndexer(int size)
    {
        myData = new string[size];
        for (int i = 0; i < size; i++)
        {
            Console.WriteLine("Enter an antry");
            myData[i] = Console.ReadLine();
            Console.WriteLine("---------------------------------");
        }
    }
}

当我编译时,我得到一个错误,无法将带有[]的索引应用于IntIndexer类型的表达式我的代码有什么问题?此错误来自Console.WriteLine(myIntIndexer[i]);

3 个答案:

答案 0 :(得分:3)

您的类型<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <form> <input id="text" type="text" required /> <input type="submit"> </form>是一个类,但您尝试通过语句IntIndexer将其作为类的数组进行访问。您必须在类中公开字符串并访问它,因为您似乎希望以字符数组的形式访问myIntIndexer[i]

string

public string[] myData;

答案 1 :(得分:1)

问题在于:

Console.WriteLine(myIntIndexer[i]);

您正尝试在IntIndexer实例上使用索引,就好像该实例本身就是一个数组,但只有类包含一个数组作为私有字段。您需要以某种方式公开它,并且一种方法是使用访问器创建属性:

public string[] MyData
{
    get { return myData; }
}

然后你可以这样称呼它:

Console.WriteLine(myIntIndexer.MyData[i]);

答案 2 :(得分:1)

您正在像数组一样访问您的实例,您可以像提到的其他答案一样公开数组,或者提供索引器属性来访问数组的内容

 public string this[int index]
 {
     get
     {
          return myData[i];
     } 
 }

这将使您能够像在回答中一样索引您的实例