
C# 关于 dictionary 一些问题?
我想实现这么一个效果:我有这么一个类publicclassStu{publicdictionray<int,homwork>homeworkList=newdiction...
我想实现这么一个效果:
我有这么一个类
public class Stu
{
public dictionray<int ,homwork> homeworkList = new dictionray<int ,homwork> ();
private void getHomeworkID()
{
实现的代码功能是:获取所有该学生的homework编号, 并将homework的编号 保 存在 homeworkList 字典集合里 但是 homeworklist 的value 全部为null
}
}
public class homework
{
public int id; public string name =" ";
public homeword(int id)
{
// 数据绑定
}
}
问题: 当我调用这个学生的 homeworkList 其中某个value时 系统会自动的 根据 value的 key 创建一个 homework 对象 ,
1.我实例化一个 学生对象 ,
2.在实例化这对象的时候
// 构造函数
public stu
{
进行ADO 操作 ,获取这个学生所有的 homework 信息 ,并返回一个 dataset
foreache(便利dataset)
{
dataset 中 id 这个列的数据 绑定到 homeworkList 这个集合的key 中去 ,并不实力化 homework 对象 让 value 为空
}
}
3. stu s = new stu(id)
// 当我 用key 访问这个 集合的时候 value 为空 对吧
s.homeworkList[1].value 为空
// 我想 实现的效果是
s.homeworkList[1].value 的时候 可以更具 我的 key 实例化一个 homework 对象
原来是想在 homeworkList 的 set 访问器中写的 但是后来发现不可以 所以问想想有什么办法 可以完成这个效果,
homework 类中 也有 包含了其他类, 其他类中也 包含了类 ,如果这么实例化下去 可能很占内存 , 所以我想 , 先让 homeworkList key 存在, value 为空, 当我需要 某个key 的value 的时候 实例化 展开
我有这么一个类
public class Stu
{
public dictionray<int ,homwork> homeworkList = new dictionray<int ,homwork> ();
private void getHomeworkID()
{
实现的代码功能是:获取所有该学生的homework编号, 并将homework的编号 保 存在 homeworkList 字典集合里 但是 homeworklist 的value 全部为null
}
}
public class homework
{
public int id; public string name =" ";
public homeword(int id)
{
// 数据绑定
}
}
问题: 当我调用这个学生的 homeworkList 其中某个value时 系统会自动的 根据 value的 key 创建一个 homework 对象 ,
1.我实例化一个 学生对象 ,
2.在实例化这对象的时候
// 构造函数
public stu
{
进行ADO 操作 ,获取这个学生所有的 homework 信息 ,并返回一个 dataset
foreache(便利dataset)
{
dataset 中 id 这个列的数据 绑定到 homeworkList 这个集合的key 中去 ,并不实力化 homework 对象 让 value 为空
}
}
3. stu s = new stu(id)
// 当我 用key 访问这个 集合的时候 value 为空 对吧
s.homeworkList[1].value 为空
// 我想 实现的效果是
s.homeworkList[1].value 的时候 可以更具 我的 key 实例化一个 homework 对象
原来是想在 homeworkList 的 set 访问器中写的 但是后来发现不可以 所以问想想有什么办法 可以完成这个效果,
homework 类中 也有 包含了其他类, 其他类中也 包含了类 ,如果这么实例化下去 可能很占内存 , 所以我想 , 先让 homeworkList key 存在, value 为空, 当我需要 某个key 的value 的时候 实例化 展开
展开全部
我不知道我的理解是否正确。。。。暂且就这样认为把。。。
代码是这样的:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
var works=GetDicList();
for (int i = 1; i < works.Count + 1; i++) //要说明是的works.Count+1,这个是我根据实际情况写的,
//因为下面对workList赋值i从1开始的,且最后一个也不是一般的<,造成的。。。
{
Response.Write("HomeWork编号:"+i+"作业的名字:"+works[i].name+"<br/>"); //根据字典的key获取值
}
}
}
/// <summary>
/// 对字典集合进行初始化
/// </summary>
/// <returns>返回字典集合</returns>
private Dictionary<int, Homework> GetDicList()
{
/**
*这个是一个实例根据你的说法那个可能是从数据库读取的数据,
*我不知道你使用SqlDataReader读取直接赋值给这Dictionary集合,还是包装成List<T>在赋值的,
*这里对reader进行简单的说明
* **/
/*Dictionary的初始化*/
/*var dic=new Dictionary<int, Homework>
{
{0, new Homework {id = 1, name = "语文"}},
{1, new Homework {id = 1, name = "数学"}},
{2, new Homework {id = 1, name = "英文"}},
{3, new Homework {id = 1, name = "物理"}}
};*/
/*reader赋值方法*/
/*var _dic = new Dictionary<int, Homework>();
while (reader.Reade())
{
if (!reader.HasRow) continue;
int key = int.Parse(reader["homeworkId"]); //读取数据库中的homeworkId作为字典的主键(也是对象Homework的id)
var homework = new Homework //定义Homework对象,并进行初始化
{
id = key,
name = reader["homeworkName"].toString()
};
_dic.Add(key, homework); //将对象添加到Dictionary集合中
}*/
/*假定你包装成了List<T>了,我也不想建一个数据库了。。。有点懒呀!!!!我就动态的添加了*/
var workList = new List<Homework>();
for (int i = 1; i <= 20; i++)
{
workList.Add(new Homework
{
id = i,
name = "魏巍做的作业"+i
});
}
/******
* workList假定就是你包装好的从数据库中读取的数据,
*接下来就是进行对集合进行初始化了
*****/
var dic = new Dictionary<int, Homework>();
foreach (var work in workList)
{
dic.Add(work.id, work); //将值添加到Dictionary集合中
}
return dic;
}
public class Homework
{
public int id { get; set; }
public string name { get; set; }
}
到这里就OK了,看看效果吧:
搞定了,当然如果你要的是这个效果的话。。。如果是的话不要忘了顶一下啊。。。
需要源码或者疑问请私密。。。。
追问
我问题 描述的不详细 , 我重新写了需求
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询