メソッド本体でパラメーターを初期化する必要がありout
ます(つまり、新しいList<Task>
インスタンスを作成してパラメーターに割り当てout
ます)。
public bool SomeMethod(out List<Task> tasks) {
var task = Task.Factory.StartNew(() => Process.Start(info);
tasks = new List<Task>() { task };
...
}
コレクション初期化構文を使用してタスクをリストに追加していますが、必要Add
に応じて代わりにメソッドを呼び出すこともできます。
次のようにメソッドを呼び出す必要があります。
List<Task> tasks;
SomeMethod(out tasks);
var newTask = tasks[0]; // Access the task just created.
out
C#7.0では、次のパラメーターを使用して関数の呼び出しで変数を宣言する、より単純な構文が導入されました。
SomeMethod(out var tasks);
var newTask = tasks[0]; // Access the task just created.
aList<T>
は参照によって渡されるため、パラメーターを取り除くことができout
ます。次に、メソッドを呼び出す前にリストを作成する必要があります。
public bool SomeMethod(List<Task> tasks) {
var task = Task.Factory.StartNew(() => Process.Start(info);
tasks.Add(task);
...
}
そしてそれをこのように呼んでください:
var tasks = new List<Task>();
SomeMethod(tasks);
var newTask = tasks[0]; // Access the task just created.
out
一般に、パラメータは混乱を招く可能性があるため、避けることをお勧めします。