2022年01月02日
川俣晶の縁側ソフトウェアnew_C#入門・全キーワード明快解説!total 508 count

メソッド呼び出し: メソッドを呼び出す2つの方法

Written By: 川俣 晶連絡先

この章のテーマ §

 メソッド呼び出しのバリエーションについて学びます。

前提知識 §

Console.WriteLineメソッド, 文字列の基礎, 変数の基礎, string型, メソッドの基礎, デリゲート型

解説 §

 メソッドを呼び出す方法は、大きく分けて2つあります。

 一つはそのメソッドの名前そのものを書いて、"メソッド名(引数リスト)"のような書式で呼び出す方法です。

 もう一つは、メソッドへの参照をデリゲート型の値として取得し、それを"式(引数リスト)"のような書式で経由して呼び出す方法です。

 つまり、括弧の手前に書かれた名前はいつもメソッド名とは限りません。

 また、式の値を経由して呼び出す場合は、サンプルソースの"myArray[123 + 456 - 579]("配列経由で呼ぶぞ");"のように、メソッド呼び出しに見えない書式になることもありますが、それでもメソッドは呼び出されています。

罠の数々 §

  • デリゲート型の値を経由して呼び出す場合、呼び出すものはラムダ式などでも良い
  • メソッドの呼び出しは、スコープで制約されるが、参照を変数に入れて持ち出せばスコープ外からも呼び出せる

参考リンク §

メソッド (C# プログラミング ガイド)

デリゲートの使用 (C# プログラミング ガイド)

サンプルソース: callingMethods §

myMethod("普通に呼ぶぞ");

Action<string> myVar = myMethod;

myVar("変数経由で呼ぶぞ");

var myArray = new Action<string>[] { myMethod };

myArray[123 + 456 - 579]("配列経由で呼ぶぞ");

void myMethod(string message)

{

    Console.WriteLine($"myMethod called: {message}");

}

実行結果 §

myMethod called: 普通に呼ぶぞ

myMethod called: 変数経由で呼ぶぞ

myMethod called: 配列経由で呼ぶぞ

リポジトリ §

https://github.com/autumn009/CSharpPrimer2

練習問題 §

 プログラムの実行中にデリゲート型の変数の値を書き換えた。

 以下のプログラムの実行結果を予測してみよう。

Action a = sub1;

a();

a = sub2;

a();

void sub1() => Console.Write("sub1 ");

void sub2() => Console.Write("sub2 ");

  1. sub1 sub1
  2. sub1 sub2
  3. sub2 sub2
  4. 実行時の例外
  5. コンパイルエラー

[[解答]]

Facebook

キーワード【 川俣晶の縁側ソフトウェアnew_C#入門・全キーワード明快解説!
【new_C#入門・全キーワード明快解説!】の次のコンテンツ
2022年
01月
03日
in、out、ref、paramsキーワード: メソッドの引数を彩る多彩なオプション達
3days 3 count
total 634 count
【new_C#入門・全キーワード明快解説!】の前のコンテンツ
2021年
12月
31日
配列の初期化構文: 手短に配列の中味をセットせよ
3days 5 count
total 514 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20220102113708
サイトの表紙【new_C#入門・全キーワード明快解説!】の表紙【new_C#入門・全キーワード明快解説!】のコンテンツ全リスト 【new_C#入門・全キーワード明快解説!】の入手全リスト 【new_C#入門・全キーワード明快解説!】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.