こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C#で、デリゲートからその関数の名前を取得する方法

次のコードを見てください。コメントにあるように デリゲートを引数とする関数内部で、そのデリゲートが受け取った関数の関数自身の名前を取得しようとしています。どうすればいいでしょうか?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace ラムダ式
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
//引数aとbの初期値
this.textBoxA.Text = "10";
this.textBoxB.Text = "5";
}

//int型を返し(I)int型2つを引数にする関数のデリゲート
public delegate int I_II(int a, int b);

public static int 足し算(int a, int b)
{
return a + b;
}
public static int 引き算(int a, int b)
{
return a - b;
}
public static int 掛け算(int a, int b)
{
return a * b;
}
public string 二項演算(I_II 演算方法)
{
//ここでは、演算方法.tostring()を使って"足し算" や"引き算"などの
//関数名を得ようとしているが。この方法だと,デリゲートの名前
//すなわち I_II が帰ってきてしまう
//どうすれば デリゲートが参照している関数名 ”足し算”や"引き算など"
//を得ることができますか?
string 関数名 = 演算方法.ToString();
return 関数名 + ": " + 演算方法(int.Parse(textBoxA.Text), int.Parse(textBoxA.Text)).ToString() + "\r\n";
}

private void button1_Click(object sender, EventArgs e)
{
textBox結果表示.Text = "";
textBox結果表示.Text += 二項演算(足し算);
textBox結果表示.Text += 二項演算(引き算);
textBox結果表示.Text += 二項演算(掛け算);

}
}
}

投稿日時 - 2013-03-28 13:05:52

QNo.8015620

暇なときに回答ください

質問者が選んだベストアンサー

演算方法.Method.Name

投稿日時 - 2013-03-28 13:54:51

お礼

ずばりでした!ありがとうございます

投稿日時 - 2013-03-28 14:11:19

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問