.NETでは例外のスローによって異常の発生とその原因を通知することが多いため、終了ステータスを用いることはあまりありませんが、終了ステータスを返すことはできます。

プロセスの終了ステータスを親プロセスに通知するには、Mainメソッドの戻り値をint/Integer、非同期の場合はTask<int>にし、Mainメソッドの戻り値によって終了ステータスを返します。

Environment.Exitメソッドを使うことでも終了ステータスの設定を行うことができます。 このメソッドはexitシステムコールに似たもので、終了ステータスを設定すると同時にプロセスを即座に終了します。

Environment.Exitメソッドで終了ステータスの設定と同時にプロセスを終了する
using System;
using System.IO;

class Sample {
  static void Main()
  {
    // ファイル'sample.txt'の有無を調べる
    if (File.Exists("sample.txt")) {
      // ファイルがある場合は何らかの処理を行うと仮定する
      Environment.Exit(0); // 正常終了
    }
    else {
      Console.Error.WriteLine("ファイルがありません。");
      Environment.Exit(1); // 異常終了
    }

    // Environment.Exitが呼び出された時点でプロセスが
    // 終了するため、この部分は実行されない
    Console.WriteLine("Hello, world!");
  }
}

終了ステータスの設定のみを行いたい場合は、Environment.ExitCodeプロパティを設定します。 Environment.Exitメソッドとは異なり、このプロパティに終了ステータスを設定してもプロセスの実行は継続します。