使用具有不同属性的字典 containskey 比较器

我试图找到一种正确的方法来在具有 class 属性的字典中找到键。


例如,请参阅下面的代码 - ContainsKey 出错,因为在密钥是 UserServiceData 时,此 ContainsKey(string) 签名没有实现。


我该如何解决这个问题?


class UserServiceData 

{

    string name;

    int someDate;

    int someData1;

}


class B

{

    public static Dictionary<UserServiceData, IClientKdcCallBack> users_list = new Dictionary<UserServiceData, IClientKdcCallBack>;


    void isUserExists(string userName)

    {

        m_users_list.ContainsKey(userName)

    }

}


哆啦的时光机
浏览 187回答 3
3回答

慕容森

您也可以尝试编写自己的相等比较器。private class UserServiceDataEqualityComparer : IEqualityComparer<UserServiceData>{&nbsp; &nbsp; public bool Equals(UserServiceData x, UserServiceData y)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; return x.name == y.name;&nbsp; &nbsp; }&nbsp; &nbsp; public int GetHashCode(UserServiceData obj)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; return obj.name.GetHashCode();&nbsp; &nbsp; }}然后像这样声明你的字典..var list = new Dictionary<UserServiceData, IClientKdcCallBack>(new UserServiceDataEqualityComparer());然后你可以这样做list.ContainsKey(UserServiceDataObj)
打开App,查看更多内容
随时随地看视频慕课网APP