【发布时间】:2016-01-15 00:10:50
【问题描述】:
我有以下代码将修改结构内的属性,并且该结构位于哈希表内。哈希表中的每个项目都有(Int)数据类型的键和(struct Bag)的键,这是我的代码:
struct Bag {
string apple_type;
string orange_type;
};
// Make a new hashtable that will have a key of (int) data type, value of (Bag)
public static Hashtable bags = new Hashtable();
然后我有一个方法可以从数据库读取数据,读取行并添加,只要有一行,它就会向哈希表添加一个项目(bag(object)):
public void initHashtbl(){
OleDbConnection db_connector = new OleDbConnection(connection_string);
// Open connection to oracle
db_connector.Open();
OleDbCommand sql_commander = new OleDbCommand(sql_statement, db_connector);
OleDbDataReader data_Reader = sql_commander.ExecuteReader();
// Read data from sql db server and store it in memory ...
Bag tempBag = new Bag();
// row counter used for list view
int row_counter = 0;
while (data_Reader.Read()) { // Keep reading data from memory until there is no row
tempBag.apple_type = data_Reader[0].ToString();
bags.Add(row_counter, tempBag);
row_counter++;
}
for(int bag_item=0;bag_item < bags.Count;bag_item++){
// Get orange type value from another method that uses another sql statement from another table in db ..
((bag) bags[bag_item]).orange_type = getOrangeType(((bag) bags[bag_item]).apple_type);
}
}
如果我想访问它,我以后如何访问已经在哈希表中的结构的属性?
编辑: 我收到此错误: "无法修改拆箱转换的结果。"
【问题讨论】:
-
您是否仅限于使用哈希表?还有其他可以使用 Dictionary
的结构,例如,您只需提供 bag[key].orange_type -
是的,我遇到了一个错误,对不起,我忘了把它添加到问题帖子中,我现在已经修改了,你现在应该可以看到了。
-
字典不允许我直接修改它,我希望能够直接修改它以供以后使用,使用字典我必须将一个变量传递给它将加载数据的变量。如果我使用字典,如下所示:bag.TryGetValue(bag_item, out tempBag);