1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)


{
    List<string> ul = new List<string>();
    Process[] procs = Process.GetProcesses();
    int u = 0;

    foreach (Process proc in procs)
    {
        ul[u] = proc.ProcessName;
        u++;
    }

}
}
}

ループが実行されるたびに各プロセス名を配列リストに移動したいのですが、アウトオブバウンド例外が発生します。いくつかのサンプルコードを提供してください。前もって感謝します...

4

2 に答える 2

4

まだ設定されていないリスト内の要素にアクセスすることはできません。.Add() 関数を使用します。

foreach (Process proc in procs)
{
    ul.Add(proc.ProcessName);
}
于 2012-07-11T16:25:20.757 に答える
2

次のように.Add()関数を使用してみてください。

        static void Main(string[] args)
        {
            List<string> ul = new List<string>();

            foreach (Process proc in Process.GetProcesses())
            {
                ul.Add(proc.ProcessName);
            }
        }

List <>が作成されると、デフォルトのサイズになり、そのサイズがいっぱいになるまでコード要素が追加されます(その時点で、次の「挿入」は失敗します。add()メソッドは、このサイズ制限がなくなったかどうかを確認します。十分であり、必要に応じてリストのサイズを増やします。

このコードはまた、いくつかの変数の必要性を排除します。

于 2012-07-11T16:26:33.607 に答える