如何检查值是否已在列表中出现 [英] How to check if value already exixts in a list

查看:83
本文介绍了如何检查值是否已在列表中出现的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

public  class Logger
{
   string module { get; set; }
   private  string sMessage { get; set; }
   public static string sNewMessage = string.Empty;
   public static List<Logger> logMessages = new List<Logger>();
   private static string sLogMessage;







private static void Log(string message, string type, string module)
{
 //here every message i entered is addedin a list now i want to check if message already exists ???do not add 
bool bMessageexists = logMessages.Contains(new Logger() { sMessage });



但即使我输入现有消息它返回false我的代码无法正常工作



我尝试过: < br $>


i已经创建了一份st振铃meggages这是好的例如HELLO消息,但我想检查它是否已经存在我的意思是如果列表已经包含HELLO消息然后不添加列表我已经写了上面的代码,但它无法正常工作,即使我输入相同的消息10次bool返回false ??


but even i entered existing message it returns false my code is not working correctly

What I have tried:

i have crated a list of string meggages which is ok for example HELLO message but i want to check if it already exists i mean if list already contains HELLO message then do not add in a list i have written a code above but its not working correctly even i entered same message 10 times bool returns false??

推荐答案

如果你的记录器类暴露了它当前的消息,那么你需要比较它:

If your logger class exposes its current message, then you need to compare that:
bool bMessageexists = logMessages.Contains(logger=>logger.Message == sMessage);



如果没有,你需要覆盖Logger.Equals,比较两个对象中的消息。


If not, you will need to override Logger.Equals, to compare the messages in both objects.

class Logger {
    string sMessage;
    //...
    public override bool Equals(object obj) {
        if (obj is Logger)
            return sMessage == ((Logger)obj).sMessage;
        return false;
    }
}


这篇关于如何检查值是否已在列表中出现的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆