C#中一个索引器调用另一个索引器的问题

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespa... using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace IndexerTest
{
class Program
{
private string[] data = new string[6];
private string[] keys = {
"Author ", "Publisher ", "Title "," Subject ","ISBN ", "Comments "};

public string this[int idx]
{
set
{
if (idx >= 0 && idx <= data.Length)
data[idx] = value;
}
get
{
if (idx >= 0 && idx <= data.Length)
return data[idx];
return null;
}
}

public string this[string key]
{
set
{
int idx = FindKey(key);
this[idx] = value; //调用参数为int的索引器
}
get
{
return this[ FindKey(key) ]; //调用参数为Int的索引器
}
}

private int FindKey(string key)
{
for (int i = 0; i < keys.Length; i++)
if (keys[i] == key) return i;
return -1;
}

static void Main(string[] args)
{
Program indexertest = new Program();

indexertest[0] = "马克-吐温";
indexertest[1] = "Crox 出版公司";
indexertest[2] = "汤姆索亚历险记";

Console.WriteLine(indexertest["Title"]);
Console.WriteLine(indexertest["Author"]);
Console.WriteLine(indexertest["Publisher"]);
}
}
}
这是一段教科书上的代码。但是在VS2008中运行出来的结果却没有调用上面的Int型的索引器。求大侠指教。
展开
 我来答
727617686
2012-05-13 · TA获得超过712个赞
知道小有建树答主
回答量:560
采纳率:0%
帮助的人:308万
展开全部

兄弟,你的代码逻辑没有问题,问题出在

private string[] keys = {"Author", "Publisher", "Title ","Subject ","ISBN", "Comments"};

里面

把数组中的字符串两边的引号去掉,就可以了,在我这运行没有问题,见图

更多追问追答
追问
可是我按你说的改了之后

编译错误显示当前上下文中不存在名称“Author”"Publisher"..........而且把引号去掉的话,理解为变量或者方法吗?不懂啊。还求指教!
追答
对不起,一时疏忽,说错了,我的意思是把引号中的空格去掉
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式