[英]What is the difference between ProcessStartInfo.EnvironmentVariables and ProcessStartInfo.Environment
[英]What’s the difference between Process and ProcessStartInfo in C#?
Process
和ProcessStartInfo
之間有什么區別? 我已經使用兩者來啟動外部程序,但必須有兩種方法可以做到這一點。 這里有兩個例子。
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);
它們非常接近,都來自 Process 類。 除了你提到的之外, Process.Start實際上還有4 個其他的重載,都是靜態的。
一種是靜態方法來做到這一點。 它返回代表啟動進程的 Process 對象。 例如,您可以使用這種方式用一行代碼啟動一個進程。
另一種是成員方法來實現它,它重用當前對象而不是返回一個新對象。
呵呵。
如果您仔細查看您的代碼,您會注意到它們都使用相同的類。 第一個示例中的StartInfo
屬性毫無疑問是ProcessStartInfo
。 在第二個示例中,您在Process
類上調用靜態.Start
方法。
那么有什么區別呢? 重大。 他們是不同的班級。 一個用於啟動進程,一個用於說明要啟動哪個進程(以及許多其他小事情,例如捕獲輸出等)。 在第一種情況下,您只需使用該類具有的默認ProcessStartInfo
屬性。
如果您查看下面的notePad
變量的成員,則ProcessStartInfo
似乎是Process
的子集
Process notePad = new Process();
您會注意到 StartInfo 具有類型(或類) ProcessStartInfo
,這就是為什么兩個初始化相同的notePad.StartInfo.FileName = "notepad.exe";
vs startInfo.FileName = "notepad.exe";
由於Process
是完整的課程,我認為它可以完成ProcessStartInfo
可以做的所有事情以及額外的但不要相信我的話,我只有不到一年的 .Net 經驗
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.