首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >List with items返回空

List with items返回空
EN

Stack Overflow用户
提问于 2011-01-14 21:30:32
回答 4查看 1.8K关注 0票数 6

我已经创建了一个简单的列表函数,但是如果我遍历列表,它就是空的。不应该是这样的!

代码语言:javascript
复制
// List function 
    public class process_hook
    {
        public static List<String> pro_hook = new List<String>
                                              (new String[] { list_all_pocesses() });
        protected static string list_all_pocesses()
        {
            StringBuilder _list = new StringBuilder();
            foreach (Process i in Process.GetProcesses("."))
            {
                try
                {
                    foreach (ProcessModule pm in i.Modules)
                    {
                        pro_hook.Add(pm.FileName.ToString());
                    }
                }
                catch { }
            }
            return _list.ToString();
        }
    }


        // call 
        private void button1_Click(object sender, EventArgs e)
        {
            foreach (String _list in process_hook.pro_hook)
            {
                Console.WriteLine(_list);
            }
        }
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-14 21:37:06

_list.ToString()不会返回任何有意义的值。试试下面这样的代码:

代码语言:javascript
复制
public static List<string> pro_hook = list_all_processes();

protected static List<string> list_all_processes()
{
    var list = new List<string>();

    foreach (Process i in Process.GetProcesses(".")) {
        try {
            foreach (ProcessModule pm in i.Modules) {
                list.Add(pm.FileName);
            }
        } catch { }
    }

    return list;
}
票数 -3
EN

Stack Overflow用户

发布于 2011-01-14 21:33:37

好吧,这是一个开始的问题:

代码语言:javascript
复制
catch { }

如果出现任何错误,您只需静默中止。

也许这就是正在发生的事情?(编辑:它是。请参阅后面的内容。)

下一个问题是你的“列表”将永远只包含一个字符串...这真的是你想要的吗?我怀疑你看到的列表实际上是空的--但它只包含一个空字符串。

(顺便说一句,我强烈建议您开始遵循.NET命名约定,并避免像这样的全局变量。)

编辑:啊--我刚刚意识到你做了什么。您可能实际上在list_all_pocesses中得到了一个NullReferenceException,您已经捕获并忽略了它。

在给pro_hook赋值之前,就会调用pro_hook.Add。基本上,你有一个变量初始化器,它使用一个方法,而这个方法又使用这个变量。不要这样做。如果你在调试器中单步执行你的代码,你可能会对正在发生的事情有更多的了解,但基本上你已经为自己创造了一个很大的意大利面球。

为什么list_all_pocesses不直接返回一个List<string>?你为什么要用StringBuilder呢?

票数 55
EN

Stack Overflow用户

发布于 2011-01-14 21:35:08

好吧..。您将返回一个空的字符串生成器。那是你的问题。你的代码正在做你告诉它做的事情。:)

代码语言:javascript
复制
 return _list.ToString();
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4691530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档