¤³¤Î¥Ú¡¼¥¸¤òdel.icio.us¤ËÄɲà ¤³¤Î¥Ú¡¼¥¸¤ò¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÄɲ䳤Υڡ¼¥¸¤ò´Þ¤à¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯ ¤³¤Î¥Ú¡¼¥¸¤òlivedoor ¥¯¥ê¥Ã¥×¤ËÄɲà ¤³¤Î¥Ú¡¼¥¸¤òYahoo!¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÄɲ䳤Υڡ¼¥¸¤ò´Þ¤àYahoo!¥Ö¥Ã¥¯¥Þ¡¼¥¯

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#¤ä¤ä¤³¤·¤¤¤Ç¤¹(¡­§Õ`;)

´ØÏ¢¥ê¥ó¥¯


¤³¤Îµ­»ö¤Ï

ÁªÂò»è Åêɼ
¤ª¤â¤·¤í¤«¤Ã¤¿ 4  
¤½¤¦¤Ç¤â¤Ê¤¤ 3  
  • C#¤ÎÃæ¥«¥Ã¥³¤ò¹ÔÊѤ¨¤¹¤ë¤Î¤¬´·¤ì¤Ê¤¤¤Ê¤¡¡£ -- ¤­¤Î? 2010-09-23 (ÌÚ) 17:14:59

¤³¤Î¥Ú¡¼¥¸¤òdel.icio.us¤ËÄɲà ¤³¤Î¥Ú¡¼¥¸¤ò¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÄɲ䳤Υڡ¼¥¸¤ò´Þ¤à¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯ ¤³¤Î¥Ú¡¼¥¸¤òlivedoor ¥¯¥ê¥Ã¥×¤ËÄɲà ¤³¤Î¥Ú¡¼¥¸¤òYahoo!¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÄɲ䳤Υڡ¼¥¸¤ò´Þ¤àYahoo!¥Ö¥Ã¥¯¥Þ¡¼¥¯

¸½ºß¤Î¥¢¥¯¥»¥¹:1431


¥È¥Ã¥×   ÊÔ½¸ Åà·ë º¹Ê¬ ¥Ð¥Ã¥¯¥¢¥Ã¥× źÉÕ Ê£À½ ̾Á°Êѹ¹ ¥ê¥í¡¼¥É   ¿·µ¬ °ìÍ÷ ñ¸ì¸¡º÷ ºÇ½ª¹¹¿·   ¥Ø¥ë¥×   ºÇ½ª¹¹¿·¤ÎRSS
Last-modified: 2012-02-27 (·î) 15:56:12 (82d)