[英]List with items returns empty
我已經創建了一個簡單的List函數,但是如果我循環遍歷List它就是空的。 不應該!
// 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);
}
}
那么這是一個問題:
catch { }
如果出現任何問題,你只會默默地中止。
也許這就是發生了什么? (編輯:是的。見稍后。)
接下來的問題是你的“列表”只會包含一個字符串...這真的是你想要的嗎? 我懷疑你看到的列表實際上是空的 - 但它將包含一個空字符串。
(作為旁注,我強烈建議您開始遵循.NET命名約定並避免像這樣的全局變量。)
編輯:Aargh - 我剛剛意識到你做了什么。 你可能實際上在list_all_pocesses
得到了一個NullReferenceException
,你已經捕獲並忽略了它。
在為pro_hook.Add
指定值之前,您調用了pro_hook
。 基本上你有一個變量初始化器,它使用一個方法反過來使用變量。 不要那樣做。 如果你在調試器中單步調試代碼,你可能會更多地了解正在發生的事情,但基本上你已經為自己創建了一個大意大利面。
為什么list_all_pocesses
只返回List<string>
? 你為什么要使用StringBuilder
?
嗯......你正在返回一個空的字符串生成器。 那是你的問題。 您的代碼正在執行您要告訴它的操作。 :)
return _list.ToString();
public class process_hook
{
public static List<string> pro_hook = list_all_pocesses();
protected static List<string> list_all_pocesses()
{
List<string> list = new List<string>();
foreach (Process i in Process.GetProcesses("."))
{
foreach (ProcessModule pm in i.Modules)
{
list.Add(pm.FileName.ToString());
}
}
return list;
}
}
_list.ToString()
不會返回任何有意義的值。 嘗試這樣的事情:
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.