2017-03-16 12 views
0

と呼ばれる方法はこれが私の最初の投稿です。私は次のコード実行するとさまざまな修飾子を持つメソッドが正確に

class Car1 
    { 
     public void PublicHelperMethod() 
     { 
      Console.WriteLine("Inside Public helper method"); 
      Console.WriteLine("Calling Private Helper method.." + PrivateHelperMethod()); 
     } 

     private string PrivateHelperMethod() 
     { 
      Console.WriteLine("Private Helper Method Called!"); 
      return "Now Inside Private Helper method"; 
     } 
    } 

を私は出力がこの順であることを期待しています:

私は望ましくない出力を取得しています。このC#のコードを実行しようとしています公共のヘルパーメソッド

インサイド

プライベートヘルパーmethod..Privateヘルパーメソッドが呼び出さ呼び出し!

今インサイドプライベートヘルパーメソッド

しかし、私は次の出力取得しています:公共のヘルパーメソッド内

プライベートヘルパーメソッドが呼び出されます!

呼び出すプライベートヘルパーmethod..Nowインサイドプライベートヘルパーメソッド

私は何をしないのですか?なぜ注文が変わったのですか? ありがとうございます。

+1

'' PrivateHelperMethod() 'という式で形成された文字列を' Console.WriteLine() 'に渡しています。 'PrivateHelperMethod()'の呼び出しが終わる前に、どうやってその式を評価できるのでしょうか? インサイド公共ヘルパーメソッドが が プライベートヘルパーメソッドを呼び出さ:PrivateHelperMethod()の全体を最初に評価する必要がある場合 –

答えて

1

これは、C#が式を評価する方法によるものです。

このメソッドをメソッド呼び出しで呼び出してみましょう。

Console.WriteLine("Inside Public helper method"); 

ニースで簡単にプリントするInside Public helper method

Console.WriteLine("Calling Private Helper method.." + PrivateHelperMethod()); 

ここで、C#は何かを印刷したいと思っています。しかし、印刷したいものは"Calling Private Helper method.." + PrivateHelperMethod()です。これは、印刷前に最初にPrivateHelperMethodという戻り値を知っていなければならないことを意味します。戻り値を知るには、メソッドを呼び出す必要があります。内部PrivateHelperMethod内には、

Console.WriteLine("Private Helper Method Called!"); 

もあります。ちょうどPrivate Helper Method Called!を印刷します。

PrivateHelperMethodは値を返します。値はCalling Private Helper method..に追加されます。これで、印刷したいものすべてが完全に評価され、Calling Private Helper method..Now Inside Private Helper methodが印刷されます。

2つのConsole.WriteLineステートメントを使用せずに目的の出力を得るにはどうすればよいですか?

class Car1 
{ 
    public void PublicHelperMethod() 
    { 
     Console.WriteLine("Inside Public helper method"); 
     Console.WriteLine("Calling Private Helper method.." + PrivateHelperMethod()); 
    } 

    private string PrivateHelperMethod() 
    { 
     return "Private Helper Method Called!\nNow Inside Private Helper method"; 
    } 
} 
+0

は、なぜそれが、この出力されません! 内部プライベートヘルパーメソッド プライベートヘルパーメソッド –

+0

@SivaramaKrishnanを呼び出すのは、 'PrivateHelperMethod'がコンソールに何も表示しないためです。それはちょうど** "Calling Private Helper method .." **に追加された値を返し、コンソールに出力します。 –

+0

明確にする!ありがとう。 –

0

コンソール右に何かを印刷するためである。このラインConsole.WriteLine("Calling Private Helper method.." + PrivateHelperMethod());を考えてみましょうか?印刷される値は連結された文字列になりますか?したがって、印刷する前に、連結を実行する2番目の文字列を確認し、PrivateHelperMethodにコントロールを移動するので、Private Helper Method Called!が印刷されます。

0

これは、WriteLinePublicHelperMethodが実行される前に、PrivateHelperMethodが実行されているからです。

あなたが代わりに行うことができますすることです:あなたはこれを書くことができ

class Car1 
{ 
    public void PublicHelperMethod() 
    { 
     Console.WriteLine("Inside Public helper method"); 
     Console.WriteLine("Calling Private Helper method.."); 
     Console.WriteLine(PrivateHelperMethod());   
    } 

    private string PrivateHelperMethod() 
    { 
     Console.WriteLine("Private Helper Method Called!"); 
     return "Now Inside Private Helper method"; 
    } 
} 
+0

さて、彼はおそらく彼のポストを編集したでしょう。なぜなら私は答えを投稿したときに、「0行のコード」がありましたが、単純なプレーンテキストの2つの回答があったからです。回答ではなくコメントでなければなりません。 – uTeisT

0

public void PublicHelperMethod() 
    { 
     Console.WriteLine("Inside Public helper method"); 
     Console.WriteLine("Calling Private Helper method.." + PrivateHelperMethod()); 
     Console.WriteLine("Private Helper Method Called!"); 
    } 

    private string PrivateHelperMethod() 
    { 
     return "Now Inside Private Helper method"; 
    } 

は、あなたはそれが呼ばれると、ジョブが実行されたときに「というプライベートメソッド」を書きます。

関連する問題