我遇到了以下代码:
var process = new Process
{
StartInfo =
{
Arguments = arguments,
FileName = applicationPath,
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true
}
};
我发现它令人困惑:为什么你能在进程后省略()?我假设这只是实例化进程对象,并在其上设置StartInfo,但我不知道你可以使用这种语法。
MSDN在传统语法中显示类似内容:
Process myProcess = new Process();
try
{
myProcess.StartInfo.UseShellExecute = false;
myProcess.StartInfo.FileName = "C:\\HelloWorld.exe";
myProcess.StartInfo.CreateNoWindow = true;
myProcess.Start();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
答案 0 :(得分:1)
此表示法隐式调用默认构造函数,并允许您初始化实例字段/属性的快捷方式。
您还可以显式调用默认构造函数
var process = new Process()
{
StartInfo =
{
Arguments = arguments,
FileName = applicationPath,
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true
}
};
或任何其他构造函数
var listener = new System.Diagnostics.ConsoleTraceListener(true)
{
TraceOutputOptions = TraceOptions.Timestamp
};
你应该习惯这种实现