如何从词典/或类之外获取字典值

时间:2014-11-22 17:28:29

标签: c# class object dictionary

假设我有一个字典功能:

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 =&#39; 4&#39;,EventCode =&#39; 4TUI&#39; //这是从另一个类Class2提供的

我希望得到比较说,Int i = 4,在2级或函数到Dictionary 4的键,这样我就可以得出键4的值。(即&#39; 4TUI&#39; )。

public static class Class2
{
    public void CompareIntToDictionary()
    {
        Int Compare= 4;

        if (Compare == Dictionary(value);????????????????????? // *This part i need help with*
        {
            Do something!!!
        }
    }
}

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

编辑:谢谢你,似乎它似乎做了伎俩,但下面的代码确实返回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!!!
        }
    }
}

我正在学习这些东西。

2 个答案:

答案 0 :(得分:1)

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!!!
        }
    }
}

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

答案 1 :(得分:0)

感谢输入的人,如果你能帮助我,你可以随便打电话给我!

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