2016-09-14 14 views
1

私は次のコード行を持ち、Microsoftのドキュメントでメソッドとオブジェクト定義を参照しましたが、それでも動作するかどうかはまだ分かりません。単純なテストコードで何が起こっていますか

using System; 
using Microsoft.VisualStudio.TestTools.UnitTesting; 

namespace HelloWorld.Tests 
{ 
    [TestClass] 
    public class WhenProgramRuns 
    { 
     private string _consoleOutput; 
     [TestInitialize] 
     public void Initialize() 
     { 
      var w = new System.IO.StringWriter(); 
      Console.SetOut(w); 
      Program.Main(new string[0]); 
      _consoleOutput = w.GetStringBuilder().ToString().Trim(); 
     } 
     [TestMethod] 
     public void SayHelloWorld() 
     { 
      Assert.AreEqual("Hello, World", _consoleOutput); 
     } 
    } 
} 

私は「W」のメインの実行と理由コードの作者は、彼がメインと呼ばれる[0]の文字列を渡すの結果をキャプチャする方法を理解していません。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace HelloWorld 
{ 
    public class Program 
    { 
     public static void Main(string[] args) 
     { 
      Console.WriteLine("Hello, World"); 
     } 
    } 
} 
+8

コンソールアプリのエントリーポイントがどのように機能しているか、 'out'キーワードがどのように働いているのか、そして引数渡しがどのように機能するのかを検討する必要があります。 –

+0

"広すぎる"と投票すると、短くて簡単なプログラムだが、StackOverflowはプライベートコーチング/教育サービスではありません。 – MarioDS

+0

@DavidL 'out'キーワードはここでは使用されません。 – Servy

答えて

2

さて、作品にそれを分割してみましょう:

私はメイン

の実行 技術

の結果をキャプチャします「W」、それは間違ってにあるかを理解していませんそれが実行の結果をキャプチャすると言う。 Googleのwは、StringWriterのインスタンスです。 StringWriterは、文字列に情報を書き込むためにTextWriterを実装しています。

コンソールはこのwインスタンスを使用して出力データを書き込みます。

と理由コードの作者が文字列を渡された彼は

メイン

を呼び出したときにそれを呼び出すために私たちが何かを渡す必要がありますので、私たちがそうであるように[0]メソッドのメインは、パラメータとして string[]を受け入れます後でこの引数を実際に必要としないので、空の配列を渡すことは大丈夫です。

  1. StringWriterを作成しますよう

    実行のロジックを記述することができます。 string[]

  2. の必要なパラメータを持つ主な方法の唯一のオーバーロードがStringWriterGetStringBuilder()を呼び出すことにより、ビルダーを取得し、それがToString()
を呼び出すことで、結果の文字列を構築makeを実行
  • データを出力するように、この StringWriterを使用する
  • 設定コンソール
  • +2

    有効でない質問に対する有効な回答です。求めている人はおそらく、ストリーム、メソッドパラメーター、オーガニックスイカの違いを知らないでしょう。問題は広い意味でここで答えることです。 – Stavm

    0

    Console.SetOut機能は、 "W" へのコンソールからの標準出力をリダイレクトします。ここでは

    がメインです。

    関連する問題