2016-07-26 41 views
0
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]);如何打印出从类对象数组,在构造

+0

你的问题是在这里'Console.WriteLine(myIntIndexer [i])'。你的变量不是容器 –

+0

你的'IntIndexer'类没有索引器。有关更多信息,请参阅[this](https://msdn.microsoft.com/en-us/library/6x16t2tx.aspx)文章。 –

回答

3

您的类型IntIndexer是一类,但您尝试通过语句myIntIndexer[i]将其作为您的类的数组访问。你不得不暴露在类和访问字符串代替,因为它似乎要访问string作为字符数组:

public string[] myData; 

Console.WriteLine(myIntIndexer.myData[i]); 
1

的问题是在这里:

Console.WriteLine(myIntIndexer[i]); 

您试图在你的IntIndexer仿佛实例是一个数组本身例如使用索引,但类只ç将作为私有字段添加到数组中。你需要以某种方式暴露这一点,要做到这一点的方法之一是创建具有访问属性:

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

然后,你可以这样调用:

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

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

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

这会给你的能力来索引到您的实例像你目前正在做的你的回答