12

簡単な質問ですが、メインメソッドを好きなように呼び出す方法はありますか?それとも「Main()」と呼ばれる必要がありますか?

4

10 に答える 10

19

これはC#の規則であり、.NETランタイムの規則ではないことに注意してください。ILでは、メソッドに任意の名前を付けることができます。

.module Mane.exe
.subsystem 3
.corflags 9

.assembly extern mscorlib
{
  .publickeytoken = (B7 7A 5C 56 19 34 E0 89)
  .ver 2:0:0:0
}

.assembly Mane
{
    .custom instance void [mscorlib]System.Runtime.InteropServices.ComVisibleAttribute::.ctor(bool) = ( 01 00 00 00 00 ) 
    .custom instance void [mscorlib]System.CLSCompliantAttribute::.ctor(bool) = ( 01 00 01 00 00 ) 
    .custom instance void [mscorlib]System.Reflection.AssemblyFileVersionAttribute::.ctor(string) = ( 01 00 07 31 2E 30 2E 30 2E 30 00 00 )
    .custom instance void [mscorlib]System.Resources.NeutralResourcesLanguageAttribute::.ctor(string) = ( 01 00 05 65 6E 2D 55 53 00 00 )

    .permissionset reqmin
               = {[mscorlib]System.Security.Permissions.SecurityPermissionAttribute = {property bool 'Execution' = bool(true)}}
    .hash algorithm 0x00008004
    .ver 1:0:0:0
}

.namespace Mane
{
    .class private abstract auto ansi sealed beforefieldinit Program extends [mscorlib]System.Object
    {
        .method private hidebysig static void Mane() cil managed
        {
            .entrypoint
            .maxstack 1
            ldstr "Hello, World!"
            call void [mscorlib]System.Console::WriteLine(class System.String)
            ret
        }
    }
}
于 2010-04-09T19:44:49.700 に答える
5

メインメソッドを別の方法で呼び出すこともできますが、呼び出されない限り、アプリケーションの最初のメソッドとして呼び出されることはありませんMain。他にもいくつかの要件と注意事項があります。MSDNから:

  • Mainメソッドは、プログラムのエントリポイントであり、プログラム制御が開始および終了します。
  • クラスまたは構造体内で宣言されます。静的である必要があり、公開されてはなりません。
  • voidまたはintreturnタイプのいずれかを持つことができます。
  • Mainメソッドは、パラメーターの有無にかかわらず宣言できます。
  • パラメータは、ゼロインデックスのコマンドライン引数として読み取ることができます。
  • CやC++とは異なり、プログラムの名前は最初のコマンドライン引数として扱われません。
于 2010-04-09T19:40:24.767 に答える
3

C#側でそれを行う方法はないと思いますが、ILを編集する場合は、ILの関数に.entrypointを追加するのは簡単です。ウィキペディアのCLIエントリを確認してください。

于 2010-04-09T19:45:40.733 に答える
1

いいえ、メインと呼ばれる必要があります。Main()およびコマンドライン引数(C#プログラミングガイド)を参照してください

于 2010-04-09T19:38:40.647 に答える
1

Main()と呼ばれる必要があります。

于 2010-04-09T19:38:47.630 に答える
1

Main()これはアプリケーションのエントリポイントであるため、呼び出す必要があります。

名前と制限はフレームワークによって定義されます。参考のためにMSDNページを次に示します。

メイン(C#)

于 2010-04-09T19:38:48.633 に答える
1

メインと呼ばれる必要があります。

本当に必要な場合は、独自のメソッドを作成して、それをMainの唯一のコード行として呼び出すことができます。

public static void Main(String[] args)
{
    Mane(args);
}
于 2010-04-09T19:39:25.457 に答える
1

いいえ...メインは標準です。ただし、Mainメソッドをホストするクラスを、プロジェクトプロパティの「スタートアップオブジェクト」設定から変更することができます。

しかし、本当に、なぜあなたはしたいのですか?誰もがそれがメインであることを知っています...だからあなたはあなたのコードを見るかもしれない他の開発者を混乱させるでしょう

于 2010-04-09T19:39:27.540 に答える
1

メイン()およびその他のメソッド(C#とJava)」から:

すべてのC#アプリケーションには、プログラムの実行を開始する場所を指定する単一のMainメソッドが含まれている必要があります。

于 2010-04-09T19:39:39.227 に答える
0

C#9.0以降、Mainメソッドは不要になりました。

C#9.0では、代わりにメインプログラムをトップレベルで作成することを選択できます。

using System;

Console.WriteLine("Hello World!");

すべてのステートメントが許可されます。プログラムは、usingsの後、ファイル内の型または名前空間宣言の前に実行する必要があります。これは、現在1つのメソッドしか使用できないのと同様に、1つのファイルでのみ実行できMainます。

これにより、ボイラープレートコードが節約され、何かをテストするためのクイックコンソールプログラムに役立ちますが、もっと深刻な場合はMain、;を使用することをお勧めします。プログラムのエントリポイントを探している場合、ソリューション全体で検索するのは簡単ですが、名前空間/クラス/メソッドの欠如Main(を検索するのはそれほど簡単ではありません。

于 2020-07-04T13:38:55.720 に答える