如何从字典外部/或类中获取字典值

本文关键字:字典 获取 外部 | 更新日期: 2023-09-27 18:31:28

假设我在 1 个类中有一个字典函数:

public static class Class1
{
    public static void StatDict(int EventNumber, string EventCode)
    {
        Dictionary<int, string> Dict1 = new Dictionary<int, sting>();
        Dictionary.Add(EventNumber, EventCode);
    }
}

输入示例:EventNumber = '4',EventCode = '4TUI'//这是从另一个类 Class2 提供的

我想在类 2 或函数中将 Int i = 4 与字典的键 4 进行比较,以便我可以提取键 4 的值。(即"4TUI")。

public static class Class2
{
    public void CompareIntToDictionary()
    {
        Int Compare= 4;
        if (Compare == Dictionary(value);????????????????????? // *This part i need help with*
        {
            Do something!!!
        }
    }
}

任何人都可以告诉我如何引用存在于 1 个类中的字典以提取与键关联的值,如果它与我在其他地方(即在另一个类中)定义的整数匹配?任何帮助将不胜感激,谢谢。

编辑:谢谢你,似乎它似乎确实可以解决问题,除了以下代码确实返回 false,即使我知道密钥在那里,它也会跳过这个(因此是 false):

int Compare = 4;
if (Class1.Dict1.ContainsKey(Compare))
{
    var eventCodecheck = Class1.Dict1[Compare];
    Debug.WriteLine("eventcode = " + eventCodecheck);
    // Do something!!!
}

但现在我面临的问题是我需要覆盖 GetHashCode 和 Equals 才能使用字典比较来自 2 个不同对象的键。

由于有用的答案,这是我使用的代码,但我不太确定如何覆盖 GetHascode 和 Equals:

    public static class Class1
    {
        public static Dictionary<int, string> Dict1 { get; set; }
        public static void StatDict(int EventNumber, string EventCode)
        {
            Dict1 = new Dictionary<int, string>();
            Dict1.Add(EventNumber, EventCode);
            Debug.WriteLine("EventNumber = " + EventNumber + " EventCode = " +       EventCode);
    }
}
public static class Class2
{
    public static void CompareIntToDictionary()
    { 
        int Compare = 4;
        if (Class1.Dict1.ContainsKey(Compare))
        {
            var eventCodecheck = Class1.Dict1[Compare];
            Debug.WriteLine("eventcode = " + eventCodecheck);
            // Do something!!!
        }
    }
}

我只是在学习这些东西。

如何从字典外部/或类中获取字典值

公开您在Class1中创建的字典并在Class2中使用它:

public static class Class1
{
    public static Dictionary<int, string> Dict1 { get; set; }
    public static void StatDict(int EventNumber, string EventCode)
    {
        Dict1 = new Dictionary<int, sting>();
        Dict1.Add(EventNumber, EventCode);
    }
}
public static class Class2
{
    public void CompareIntToDictionary()
    {
        int Compare = 4;
        if (Class1.Dict1.ContainsKey(Compare))
        {
            var eventCode = Class1.Dict1[Compare];
            // Do something!!!
        }
    }
}

最好使用对象而不是静态。

感谢您的输入,如果您能帮助我,您可以随心所欲地称呼我!

最后,我

切换到解决了问题的排序列表,但是发布的代码帮助我指明了正确的方向,所以非常感谢。