C#¤ÏDelegate¤ò¸À¸ì¤Ç¥µ¥Ý¡¼¥È¤·¤Æ¤ë¤ß¤¿¤¤ †C#¤Ç¤Ï¡Ödelegate¡×¤È¤¤¤¦µ¡¹½¤Ç¡¢¼ÂÁõ¤ÎÀÚÂØ¤ò¤¹¤ë¤³¤È¤¬¸À¸ì»ÅÍͤǥµ¥Ý¡¼¥È¤µ¤ì¤Æ¤ë¤ß¤¿¤¤¤Ç¤¹¡£¤¤¤ï¤æ¤ë¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¤Ç¤¤¤¦¡¢¼ÂÁõ¤ò¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ä¤«¤Ã¤ÆÀÚ¤êÂØ¤¨¤ë¤Ã¤Æ¥ä¥Ä¤Ç¤¹¡£Java¤Ç½ñ¤¯¤È¤³¤ó¤Ê´¶¤¸¡£ package console_application1;
public class Program {
public static void main(String[] args) {
Base plus = new Plus();
Base mult = new Mult();
calc(2, 3, plus);
calc(2, 3, mult);
}
public static void calc(int x, int y, Base instance) {
int result = instance.method(x, y);
System.out.println(result);
}
}
interface Base {
int method(int x, int y);
}
class Plus implements Base {
public int method(int x, int y) {
return x + y;
}
}
class Mult implements Base {
public int method(int x, int y) {
return x * y;
}
}
¤â¤Á¤í¤óC#¤Çdelegate¤ò»È¤ï¤Ê¤¤¤Ç½ñ¤¯¤³¤È¤â¤Ç¤¤Þ¤¹¡£¤³¤ó¤Ê´¶¤¸¤Ç¤¹¤Í¡£ using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Base plus = new Plus();
Base mult = new Mult();
calc(2,3, plus);
calc(2,3, mult);
}
public static void calc(int x, int y, Base instance)
{
int result=instance.method(x,y);
Console.WriteLine(result);
}
}
interface Base
{
int method(int x, int y);
}
class Plus : Base
{
public int method(int x, int y)
{
return x + y;
}
}
class Mult : Base
{
public int method(int x, int y)
{
return x * y;
}
}
}
Java¤ÈC#¤Ï¤Û¤È¤ó¤É½ñ¤Êý¤¬Æ±¤¸¤Ç¥é¥¯¥Á¥ó¤Ç¤¹ ¤µ¤Æ¤³¤ì¤òC#¤Îdelegate¤Ç¤«¤¯¤È¤³¤ó¤Ê´¶¤¸¤ß¤¿¤¤¤Ç¤¹ using System;
namespace ConsoleApplication1
{
delegate int Calculator(int x, int y);//delegate¤ÎÀë¸À
class CalculatorBase
{
public int methodMult(int x, int y)
{
return x * y;
}
public int methodPlus(int x, int y)
{
return x + y;
}
}
class Program
{
static void Main(string[] args)
{
CalculatorBase calculator = new CalculatorBase();
calc(2, 3, new Calculator(calculator.methodPlus));
calc(2, 3, new Calculator(calculator.methodMult));
}
public static void calc(int x, int y, Calculator instance)
{
int result=instance(x,y);
Console.WriteLine(result);
}
}
}
¥á¥½¥Ã¥É¤Î·¿(¡©)¤ò delegate int Calculator(int x, int y); ¤Ã¤ÆÀë¸À¤·¤Æ¤ª¤¤¤Æ¡¢¼ÂÁõ¤ò new Calculator(calculator.methodPlus) ¤Ã¤Æ¥³¥ó¥¹¥È¥é¥¯¥¿¤Ç»ØÄꤹ¤ë¤Ã¤Æ´¶¤¸¡©Java¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ä¤«¤Ã¤¿Delegate¤È°ã¤¦¤Î¤Ï»ØÄꤹ¤ë¼ÂÁõ¥¯¥é¥¹¤Î·¿¤¬Ç¤°Õ¤Ã¤Æ¥³¥È¤«¤Ê¤¢¡©¡© ƿ̾¥¯¥é¥¹¤Ã¤Ý¤¯¤«¤¤¤Æ¤ß¤ë †calc(2, 3, new Calculator(calculator.methodPlus)); ¤Î²Õ½ê¤Ï¤¤¤ï¤æ¤ëƿ̾¥¯¥é¥¹¤ß¤¿¤¤¤Ê´¶¤¸¤Ç½ñ¤¯¤³¤È¤â¤Ç¤¤Þ¤¹¡£ calc(2, 3, new Calculator(delegate(int x, int y)
{
return x - y;
}));
¡Ödelegate¡×¤ÆÃ±¸ì¤ò»È¤¦¤Ã¤Æ»ö¤Ç¤¹¤Í¡£ ¥é¥à¥À¼°¡©¤Ã¤Æ¤Î¤â¤¢¤ë¤é¤·¤¤ †calc(2, 3, new Calculator((int x, int y) =>
{
return x + y;
}));
¤³¤¦¤ä¤Ã¤Ædelegate¤Ã¤ÆÃ±¸ì¤¹¤é¾Êά¤Ç¤¤¿¤ê¡¢²Ì¤Æ¤Ï calc(2, 3, new Calculator((int x, int y) => x + y)); ¤³¤¦¤¤¤¦Ê¸Ë¡¤â¤¢¤ë¤ß¤¿¤¤¤Ç¤¹¡£ C#¤ä¤ä¤³¤·¤¤¤Ç¤¹(¡§Õ`;) ´ØÏ¢¥ê¥ó¥¯ †
¤³¤Îµ»ö¤Ï
¸½ºß¤Î¥¢¥¯¥»¥¹:1431 |