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 的评论将是更好的选择,因为它将使您能够更有效地引用该结构。