2016-12-14 3 views
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); 
    } 
} 

ありがとうございます。

答えて

5
public static void Main(string[] args) => Console.WriteLine("Hello World!"); 

delegateキーワードがないため、代理人ではありません。それは単なる方法/機能です。それが書かれている方法は、C#6で導入された単純なメソッド/関数を記述するための簡潔な方法です。これは、式身体機能と呼ばれています。 C# : The New and Improved C# 6.0を参照してください。

+0

パーフェクト。ありがとうございました。 –

関連する問題