2
要するに、次のコードがコンパイルされ実行される理由を知りたいと思います。C#プログラムのmainメソッドにラムダ式を付けるとどうなりますか?
using System;
namespace ConsoleApplication
{
public class Program
{
public static void Main(string[] args) => Console.WriteLine("Hello World!");
}
}
のC#の私の限られた知識は、メインの名前の委任が作成されていることを私に言っている、といくつかの理由のためのコンパイラ/ランタイムは、プログラムの有効な出発点として、この委任を受け入れます。私の理解は正しいのですか?このような声明が使われる特別な理由はありますか?
私はRoslynのソースコードを見て、hereを見つけました。
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.IO;
using Microsoft.CodeAnalysis.CommandLine;
using Roslyn.Utilities;
using System;
namespace Microsoft.CodeAnalysis.CSharp.CommandLine
{
public class Program
{
public static int Main(string[] args)
=> Main(args, Array.Empty<string>());
public static int Main(string[] args, string[] extraArgs)
=> DesktopBuildClient.Run(args, extraArgs, RequestLanguage.CSharpCompile, Csc.Run, new DesktopAnalyzerAssemblyLoader());
public static int Run(string[] args, string clientDir, string workingDir, string sdkDir, string tempDir, TextWriter textWriter, IAnalyzerAssemblyLoader analyzerLoader)
=> Csc.Run(args, new BuildPaths(clientDir: clientDir, workingDir: workingDir, sdkDir: sdkDir, tempDir: tempDir), textWriter, analyzerLoader);
}
}
ありがとうございます。
パーフェクト。ありがとうございました。 –