C#按值获取字典键值是struct类型
C# Get dictionary key by value where value is of struct type
请告诉我这是否可行以及如何获得。
In C# I have a struct like:
public struct FrmData{
int num;
int x;
Timer t;
}
我使用的是字典,其中值是该结构。
public Dictionary<int, FrmData> dictionary;
当我的计时器 t 过去时,他引发事件
public void eventHandlerTick(object sender, EventArgs e){
switch(key){case 1:break;}
}
我的问题是:我能以某种方式从引发此事件的计时器中获取字典的键吗?!
谢谢
唯一的方法是遍历键值对,检查每对值是否与您的计时器匹配。
类似于:
Timer t = sender as Timer;
foreach(var kvp in dictionary){ // Could also do KeyValuePair<int, FrmData> instead of var
if(kvp.Value.Timer == t)
{
int key = kvp.Key
// Do something with the key
}
}
public struct FrmData
{
int num;
int x;
Timer t;
public Timer Timer
{
get { return t; }
}
}
编辑
我最初的回复假定您的字典结构是一成不变的。如果没有,Will 的评论将是更好的选择,因为它将使您能够更有效地引用该结构。
请告诉我这是否可行以及如何获得。
In C# I have a struct like:
public struct FrmData{
int num;
int x;
Timer t;
}
我使用的是字典,其中值是该结构。
public Dictionary<int, FrmData> dictionary;
当我的计时器 t 过去时,他引发事件
public void eventHandlerTick(object sender, EventArgs e){
switch(key){case 1:break;}
}
我的问题是:我能以某种方式从引发此事件的计时器中获取字典的键吗?! 谢谢
唯一的方法是遍历键值对,检查每对值是否与您的计时器匹配。
类似于:
Timer t = sender as Timer;
foreach(var kvp in dictionary){ // Could also do KeyValuePair<int, FrmData> instead of var
if(kvp.Value.Timer == t)
{
int key = kvp.Key
// Do something with the key
}
}
public struct FrmData
{
int num;
int x;
Timer t;
public Timer Timer
{
get { return t; }
}
}
编辑
我最初的回复假定您的字典结构是一成不变的。如果没有,Will 的评论将是更好的选择,因为它将使您能够更有效地引用该结构。