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 :(得分: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];
}
}
这将使您能够像在回答中一样索引您的实例