Какой из следующих кодов будет более практичным, выполнимым и быстрым?C # - PullRequest
0 голосов
/ 23 мая 2011

Оба эти метода работают правильно, но мне было интересно, какой из них "лучше"? Либо лучшие практики, меньше подвержены ошибкам или быстрее?

Метод 1:

    public static ListViewItem[] GetProcessData()
    {
        ManagementClass MgmtClass = new ManagementClass("Win32_Process");
        ListViewItem[] ProcessItems = new ListViewItem[MgmtClass.GetInstances().Count - 2];
        int i = 0;

        foreach (ManagementObject Processes in MgmtClass.GetInstances())
        {
            if (!Processes["Name"].ToString().ToLower().Contains("system"))
            {
                string[] ProcessInfo = { Processes["Name"].ToString(), Processes["ProcessId"].ToString() };
                ProcessItems[i] = new ListViewItem(ProcessInfo);
                i++;
            }
        }

        return ProcessItems;
    }

Метод 2:

    public static ListViewItem[] GetProcessData()
    {
        Process[] PInfo = Process.GetProcesses();
        ListViewItem[] ProcessItems = new ListViewItem[PInfo.Length - 2];
        int j = 0;

        for (int i = 0; i < PInfo.Length; i++)
        {
            if (!PInfo[i].ProcessName.ToLower().Contains("system") & !PInfo[i].ProcessName.ToLower().Contains("idle"))
            {
                string[] ProcessInfo = { PInfo[i].MainModule.ModuleName, PInfo[i].Id.ToString() };
                ProcessItems[j] = new ListViewItem(ProcessInfo);
                j++;
            }
        }

        return ProcessItems;
    }

1 Ответ

2 голосов
/ 23 мая 2011

Я бы использовал класс Process в качестве типизированного подхода.Чуть меньше ошибок в этом случае:

public static ListViewItem[] GetProcessData()
{
    return Process.GetProcesses()
        .Where(arg => arg.Id != 0 && !arg.ProcessName.ToLower().Contains("system"))
        .Select(arg => new ListViewItem(new[] { arg.MainModule.ModuleName, arg.Id.ToString() }))
        .ToArray();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...