A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵威 中级黑马   /  2013-4-24 16:21  /  1168 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 赵威 于 2013-4-25 16:52 编辑

namespace
{
class Program
    {
        static void Main(string[] args)
        {
            Class1 c1 = new Class1();
            string[] str={"mingren","jiuxinnai","shuimen"};
            c1.ChangeString(str,M1);
            foreach (var items in str)
            {
                Console.WriteLine(items);
            }
            Console.ReadKey();
        }
        static string M1(string str)
        {
            return "=" + str + "=";
        }
        static string M2(string str)
        {
            return str.ToUpper();
        }
    }
public class Class1
    {
        public void ChangeString(string[] str, ModifyStringDelegate md)
        {
            for (int i = 0; i < str.Length; i++)
            {
                str = md(str);
            }
        }
    }
    public delegate string ModifyStringDelegate(string str);

}


file:///C:/Users/Administrator/AppData/Local/youdao/ynote/images/AF8BC0AB9F444A929AAF4F58177EAB99/BE55859A7E4F4282800F49729B80F902.jpg
截图:
这里本来应该new一个委托对象的,然后将方法当参数传到程序中,但为什么没有new,直接把方法传到第二个参数的位置上,也能出结果,这是为什么??

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

1 个回复

倒序浏览
// Declare a delegate
//委托 Del 和关联的方法MultiplyNumbers 具有相同的签名
//C# 中,命名方法是对委托进行实例化的唯一方式。但是,在不希望付出创建新方法的系统开销时,C# 使您可以对委托进行实例化,并立即指定委托在被调用时将处理的代码块。这些被称为匿名方法。
delegate void Del(int i, double j);
class MathClass
{
    staticvoid Main()
    {
       MathClass m = new MathClass();
        // Delegate instantiation using"MultiplyNumbers"
       Del d = m.MultiplyNumbers;
        //Invoke the delegate object.
       System.Console.WriteLine("Invoking the delegate using'MultiplyNumbers':");
       for (int i = 1; i <= 5; i++)
        {
           d(i, 2);
        }
    }
    //Declare the associated method.
    voidMultiplyNumbers(int m, double n)
    {
       System.Console.Write(m * n + " ");
    }
}
输出
Invoking the delegate using 'MultiplyNumbers':
2 4 6 8 10

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马