В чем разница между Process и ProcessStartInfo в С#?

В чем разница между Process и ProcessStartInfo? Ive использовал оба для запуска внешних программ, но есть причина, по которой есть два способа сделать это. Вот два примера.

Process notePad = new Process();
notePad.StartInfo.FileName = "notepad.exe";
notePad.StartInfo.Arguments = "ProcessStart.cs";
notePad.Start();

и

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "notepad.exe";
startInfo.Arguments = "ProcessStart.cs";
Process.Start(startInfo);

Ответ 1

Они довольно близки к тому же, оба из класса Process. И на самом деле 4 других перегрузки в Process.Start, кроме того, что вы упомянули, все статические.

Один из них - это способ static method. Он возвращает объект Process, представляющий процесс, который запускается. Например, вы можете запустить процесс с помощью одной строки кода, используя этот способ.

И другой метод метод метода, который повторяет текущий объект вместо того, чтобы возвращать новый.

Ответ 2

Хех.

Если вы внимательно посмотрите на свой код, вы заметите, что оба они используют одни и те же классы. Свойство StartInfo в вашем первом примере не вызывает сомнения, ProcessStartInfo. Во втором примере вы вызываете статический метод .Start в классе Process.

Так в чем же разница? Значительное. Это разные классы. Один из них - для запуска процессов, один - для того, чтобы сказать, какой процесс запускать (и много других мелочей, например, захват вывода и т.д.). В первом случае вы просто используете свойство ProcessStartInfo по умолчанию, которое имеет класс.