アクセスランキング C# メソッドと引数、戻り値 - 挫折した人のためのC#講座

直列つなぎ。 -とある発達障害者の記録

知識と知識を繋ぐためのblog。 広汎性発達と診断されました。ぜんぜん役に立ってないけど。月収13万円(うち手取り11万)、家賃4万円で生活するひつじ人間。モウマンタイ。

  

C# メソッドと引数、戻り値

ブログパーツ
 12.27 画像を追加 コード修正


 この項の習得時間は15~20分程度(見込み)です。

 前項 C# 作りたいものを考える | イベントと引数(各イベントの共通化と判定)
では、イベントとイベントハンドラーをについて大まかに解説しました。イベントハンドラー内のコードブロックに、引数 object sender ,EventArgd e を取っていましたね。


メソッドを定義しよう

 メソッドとは  

  イベントと異なり、任意の引数(省略も可)を取り、イベントには代入されない一連の処理です。

  (アクセス修飾子) (戻り値の型) 任意の名前 (引数)

{ //処理内容 } 

 となります



 一番簡単なメソッド例

  ここでは引数と戻り値、アクセス修飾子を省略しています。

  textBoxを三つ、button一つを任意の位置に配置してください。



   
      


 //戻り値なしの場合はvoid
void 文字列を連結()
        {
            textBox3.Text = textBox1.Text + textBox2.Text;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            文字列を連結();       
}


 呼び出しはこのように、メソッド名()で行います。引数なし、戻り値なしの一番簡単なメソッドです。テキストボックスに適当な文字列を入れて、ボタンを押してみましょう。


一番簡単なメソッド



メソッドと引数

  引数を省略した例では、直接コードブロック内{}にコントロールのプロパティを指定していました(コントロール:textBox3, プロパティ:textBox3.Text)。では、引数を指定してみましょう。
 


 
       void 文字列を連結(string 文字列1,string 文字列2)
        {
                 textBox3.Text = 文字列1 + 文字列2;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            文字列を連結(textBox1.Text,textBox2.Text);
        }

今度はメソッド呼び出し側で、直接プロパティを指定しています。このように、呼び出し側で引数を指定する事でプログラミングの自由度を高めることが出来ます。


 


 電球 このとき、呼び出し側で引数が一致していないとエラーが出ます。
 「~に対応する特定の引数がありません」
  引数のerror



戻り値を使ってみよう

 戻り値とは、メソッドの出力結果です。戻り値を指定しないvoid型のメソッドでは直接、対象のコントロールのプロパティに代入することで目的の処理結果を得ていました。

 今度は戻り値によって、それを省略してみましょう。
 


 String 文字列を連結(string 文字列1,string 文字列2)
        {
           
            string 連結結果 = 文字列1 + 文字列2;
     
            return 連結結果;

        }

        private void button1_Click(object sender, EventArgs e)
        {
            textBox3.Text = 文字列を連結(textBox1.Text,textBox2.Text);

        }
 
  このように出力結果だけを出して、それを目的のプロパティ(textBox3.Text)に代入するといった処理が可能です。


  nc97113.png引数の名前と呼び出し側の名前が一致してないよ?
  呼び出し側の引数は、呼んだ時点でメソッド側で割り当てられます。
     初見では躓きやすい箇所だと思います。あらかじめ、図を書いておくと分かりやすいでしょう。


 C#図解


 

電球コラム イベントハンドラーとメソッドの違い
イベントハンドラーは、メソッドとそれほど違いはありません。しかし、ユーザー定義のメソッドと違い、イベントハンドラーはデリゲートが要求する特定の引数(object ,EventArgs)しか受け付けないclickイベントに+=で代入されるという特性があります。
  
   引数さえ一致させれば、メソッドをイベントハンドラーとして使えますし、名前も任意に変更できます。
 
 また、イベントハンドラー内でイベントハンドラーを呼ぶといった処理も可能です。
例  
 private void textBox2_KeyDown(object sender, KeyEventArgs e)
        {     textBox1_KeyDown(sender, e); }
           

 意外と気が付かないのですが、このように通常のメソッドとして呼べるのですね。 
 textBox2でエンターキーを押したとき、同時にtextBox1のイベントハンドラーも実行させるといった、メソッド的な使い方が出来てしまいます。



デリゲートとイベントは自分で定義する事も出来ます。 難しくなりそうなので、いずれ後述します@-ᴥ-@
関連記事
スポンサーサイト

 挫折した人のためのC#講座

     

0   Comments

Leave a comment