第一题:
请用C#实现一个可以使用复合关键字访问的容器:
public interface Icontainer
{
object this[object key1,object key2]{get;set;}
void add(object key1,object key2)
void Remove(object key1,object key2)
bool contains(object key1,object key2)
}
public class MyContainer:Icontainer
{
//在此处写出实现的代码;
}
第二题:用c#实现可以按索引和关键字访问的容器
public interface Icontainer
{
object this[int index]{get;set;}
object this[object key]{get;set;}
object add(object key,object value)
void Remove(object key)
void Remove(object index)
bool contains(object key)
}
public class MyContainer:Icontainer
{
//在此处写出实现的代码;
}
请用C#实现一个可以使用复合关键字访问的容器:
public interface Icontainer
{
object this[object key1,object key2]{get;set;}
void add(object key1,object key2)
void Remove(object key1,object key2)
bool contains(object key1,object key2)
}
public class MyContainer:Icontainer
{
//在此处写出实现的代码;
}
第二题:用c#实现可以按索引和关键字访问的容器
public interface Icontainer
{
object this[int index]{get;set;}
object this[object key]{get;set;}
object add(object key,object value)
void Remove(object key)
void Remove(object index)
bool contains(object key)
}
public class MyContainer:Icontainer
{
//在此处写出实现的代码;
}
解决方案 »
- C#在调用Oracle存储过程时取不到procedure中返回的参数
- VB转换成C#时遇到的问题3
- 只能用http://localhost 访问, 不能用http://IP访问?
- DES加密问题,急~~~~,解决马上给份
- showModalDialog弹出页面中使用javascript:location.replace问题
- 为什么两个变量指向同一地址了
- 关于监视文件改动的问题
- MediaPlayer控件 和 socket 传输冲突问题
- c#中怎样快速得修改SQL SERVER2000得单条记录,并存入数据库
- 请问cpu的processorId是否是全球唯一的?
- [请教].net中如何使用命名空间:System.Security.Cryptography.Xml
- 救命去,来者有分
{
public class Employee
{
string name,empID;
public Employee(string name,string empID)
{
this.name = name;
this.empID = empID;
}
public string Name
{
get
{
return name;
}
set
{
this.name = value;
}
}
public string EmpID
{
get
{
return empID;
}
set
{
this.empID = value;
}
}
} public class Office
{
private Employee [] employees =new Employee[20];
private int csr = 0;
public Office(params Employee [] employeeList )
{
foreach(Employee i in employeeList)
{
employees[csr++] = i;
}
}
public Employee this[int index]
{
get
{
if(index<0 || index > employees.Length)
{
//error and do somthing
}
return employees[index];
}
set
{
if(index<0 || index > employees.Length)
{
//error and do somthing
}
else
{
employees[index] = value;
if(csr < index)
{
csr = index;
}
}
}
} public Employee this[string index]
{
get
{
if(index.Length == 0)
{
//error
}
return this[getIndexFromName(index)];
}
set
{
this[getIndexFromName(index)] = value;
}
} private int getIndexFromName(string name)
{
for(int i= 0;i < employees.Length; i++)
{
if(employees[i]!=null && employees[i].Name == name)
{
return i;
}
}
return -1;
}
public void Display()
{
foreach(Employee e in employees)
{
if(e!=null)
{
Console.WriteLine("{0}'s ID is: {1}\n",e.Name,e.EmpID);
}
}
} } public class Test
{
public static void Main()
{
Test test = new Test();
test.Run();
}
public void Run()
{
Employee[] arrEmp = new Employee[3];
arrEmp[0] = new Employee("jonathan","20");
arrEmp[1] = new Employee("shenjane","30");
arrEmp[2] = new Employee("bob","40");
Office office = new Office(arrEmp);
office[10] = new Employee("tom","20");
office.Display();
}
}
}
第二题:这样可以么?
using System;
using System.Collections;public interface Icontainer
{
object this[int index]{get;set;}
object this[object key]{get;set;}
void add(object key,object value);
void Remove(object key);
void Remove(int index);
bool contains(object key);
}class MyContainer:Icontainer //最好实现了IEnumerable接口这样就可以根据key进行enum
{
private SortedList list = new SortedList();
public int Length
{
get
{
return list.Count;
}
}
public object this[int index]
{
get
{
return list.GetByIndex( index );
}
set
{
list.SetByIndex( index, value );
}
}
public object this[object key]
{
get
{
return this[list.IndexOfKey( key )];
}
set
{
this[list.IndexOfKey( key )] = value;
}
}
public void add(object key, object Value)
{
list.Add( key, Value );
}
public void Remove(object key)
{
list.Remove( key );
}
public void Remove( int index )
{
list.RemoveAt( index );
}
public bool contains(object key)
{
if( list.Contains(key) )
{
return true;
}
else
{
return false;
}
}
}public class a
{ public static void Main()
{
MyContainer con = new MyContainer();
con.add( "1", "a" );
con.add( "2", "b" );
Console.ReadLine();
printcon(con);
Console.ReadLine();
Console.Write( con["1"] );
}
private static void printcon( MyContainer con )
{
for( int i=0; i<con.Length; i++ )
{
Console.Write( con[i] + "\n" );
}
}
}
public class MyContainer:Icontainer
{
Hashtable HashTbl;
public MyContainer()
{
HashTbl = new Hashtable();
}
public object this[object key1,object key2]
{
get
{
if(contains(key1,key2))
return null;
Hashtable TmpHash;
TmpHash = (Hashtable)HashTbl[key1];
return TmpHash[key2];
}
set
{
if(!contains(key1,key2))
return;
Hashtable TmpHash;
TmpHash = (Hashtable)HashTbl[key1];
HashTbl.Remove(key1);
TmpHash[key2] = value;
HashTbl.Add(key1,TmpHash);
}
}
public void add(object key1,object key2,object Value)
{
Hashtable TmpHash; if(contains(key1,key2))
return;
if(HashTbl.ContainsKey(key1))
{
TmpHash = (Hashtable)HashTbl[key1];
HashTbl.Remove(key1);
}
else
{
TmpHash = new Hashtable();
}
TmpHash.Add(key2,Value);
HashTbl.Add(key1,TmpHash);
}
public bool contains(object key1,object key2)
{
Hashtable TmpHash;
if(HashTbl.ContainsKey(key1))
{
TmpHash = (Hashtable)HashTbl[key1];
return TmpHash.ContainsKey(key2);
}
return false;
}
public void Remove(object key1,object key2)
{
if(contains(key1,key2))
return;
Hashtable TmpHash;
TmpHash = (Hashtable)HashTbl[key1];
HashTbl.Remove(key1);
TmpHash.Remove(key2);
HashTbl.Add(key1,TmpHash);
}
}
第二個:
可以如 guag(天知道)老兄所說的做,也可以用Hashtable和ArrayList組合起來做
如果用一重也可以,将多个key合成一个对象即可。
或者自己写搜索代码