using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;namespace 索引器练习1
{
public class IndexClass
{ private Hashtable name = new Hashtable();
public string this[int index]
{ get
{ return name[index].ToString();
}
set
{ this.name.Add(index, value);//因为这里是调用A索引器,通过编号的索引来找字符,所以name在前,value在后面
}
}
public int this[string s_name]
{ get
{
foreach(DictionaryEntry de in name)
{
return Convert.ToInt32(de.Key);
}
return(1);
}
set
{ this.name.Add(value, s_name);//因为这里是调用B索引器,通过字符的索引来找编号,所以value在前,name在后面
}
}
}
class Program
{
static void Main(string[] args)
{
// 这里是调用A索引器
IndexClass ic = new IndexClass();
ic[100] = "张三";
ic[200] = "李四";
ic[300] = "王五"; Console.WriteLine(" 编号为100的员工是: " + ic[100]);
Console.WriteLine(" 编号为200的员工是: " + ic[200]);//因为这里是调用A索引器,通过编号的索引来找字符
Console.WriteLine(" 编号为300的员工是: " + ic[300]); //这里是调用B索引器 Console.WriteLine();
Console.WriteLine("张三的编号是:"+ic["张三"]);//因为这里是调用B索引器,通过字符的索引来找编号
Console.WriteLine("李四的编号是:"+ic["李四"]);
Console.WriteLine("王五的编号是:"+ic["王五"]); ic["马六"] = 400;
ic["钱七"] = 500; //调用A索引器
Console.WriteLine();
Console.WriteLine(" 编号为400的员工是: " + ic[400]);
Console.WriteLine(" 编号为500的员工是: " + ic[500]); //因为这里是调用A索引器,通过编号的索引来找字符 Console.ReadLine(); }
}
}请各位大侠看下是不是程序哪里有问题啊?
程序可以运行,可是在用字符找标号的时候读出来的数据只能是最后一个的编号。而且读出来的3个编号都是一样的,请问是不是遍历那里除了问题呢?下面是问题啊://因为这里是调用B索引器,通过字符的索引来找编号
//调用B索引器
Console.WriteLine("张三的编号是:" + b["张三"]);
Console.WriteLine("李四的编号是:" + b["李四"]);
Console.WriteLine("王五的编号是:" + b["王五"]); 这里只能找到最后一个的编号,前面的字符对应的编号循环不出来,请问怎么才能让每个都能遍历出来呢?运行出来的结果是:
张三的编号是:300
李四的编号是:300
王五的编号是:300
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;namespace 索引器练习1
{
public class IndexClass
{ private Hashtable name = new Hashtable();
public string this[int index]
{ get
{ return name[index].ToString();
}
set
{ this.name.Add(index, value);//因为这里是调用A索引器,通过编号的索引来找字符,所以name在前,value在后面
}
}
public int this[string s_name]
{ get
{
foreach(DictionaryEntry de in name)
{
return Convert.ToInt32(de.Key);
}
return(1);
}
set
{ this.name.Add(value, s_name);//因为这里是调用B索引器,通过字符的索引来找编号,所以value在前,name在后面
}
}
}
class Program
{
static void Main(string[] args)
{
// 这里是调用A索引器
IndexClass ic = new IndexClass();
ic[100] = "张三";
ic[200] = "李四";
ic[300] = "王五"; Console.WriteLine(" 编号为100的员工是: " + ic[100]);
Console.WriteLine(" 编号为200的员工是: " + ic[200]);//因为这里是调用A索引器,通过编号的索引来找字符
Console.WriteLine(" 编号为300的员工是: " + ic[300]); //这里是调用B索引器 Console.WriteLine();
Console.WriteLine("张三的编号是:"+ic["张三"]);//因为这里是调用B索引器,通过字符的索引来找编号
Console.WriteLine("李四的编号是:"+ic["李四"]);
Console.WriteLine("王五的编号是:"+ic["王五"]); ic["马六"] = 400;
ic["钱七"] = 500; //调用A索引器
Console.WriteLine();
Console.WriteLine(" 编号为400的员工是: " + ic[400]);
Console.WriteLine(" 编号为500的员工是: " + ic[500]); //因为这里是调用A索引器,通过编号的索引来找字符 Console.ReadLine(); }
}
}请各位大侠看下是不是程序哪里有问题啊?
程序可以运行,可是在用字符找标号的时候读出来的数据只能是最后一个的编号。而且读出来的3个编号都是一样的,请问是不是遍历那里除了问题呢?下面是问题啊://因为这里是调用B索引器,通过字符的索引来找编号
//调用B索引器
Console.WriteLine("张三的编号是:" + b["张三"]);
Console.WriteLine("李四的编号是:" + b["李四"]);
Console.WriteLine("王五的编号是:" + b["王五"]); 这里只能找到最后一个的编号,前面的字符对应的编号循环不出来,请问怎么才能让每个都能遍历出来呢?运行出来的结果是:
张三的编号是:300
李四的编号是:300
王五的编号是:300
if (s_name== de.Value.ToString() )
return Convert.ToInt32(de.Key);