示例#1
0
        public void AddBegin(string sKey, TaskResultData oTast, AsyncCallback fCallback, object oParam)
        {
            DelegateAdd oDelegateAdd = new DelegateAdd(Add);

            m_oAdd = oDelegateAdd;
            oDelegateAdd.BeginInvoke(sKey, oTast, fCallback, oParam);
        }
示例#2
0
        static void Main(string[] args)
        {
            #region 值引用
            ValueParam p1 = new ValueParam();
            int        a  = 5;
            p1.Add1(a);
            p1.Add2(ref a);
            p1.Add3(out a);
            Console.WriteLine("Main" + a);
            #endregion

            #region

            /*
             * 引用类型 ref,out没变化,注意函数内部是否new了一个新的对象并把指针指向新对象,这样数据就变了
             */
            #endregion
            Add(1, 2, 3);               //会自动构造数组

            string str = "123";
            str.ToInt32(str);               // 扩展string方法

            #region
            //委托
            DelegateAdd delegateAdd = new DelegateAdd(Add1);                //简写 DelegateAdd delegateAdd = Add1; DelegateAdd delegateAdd += Add1;(添加一个方法)  DelegateAdd delegateAdd -=Add1;(移除一个方法)
            delegateAdd(1, 2);
            #endregion

            #region
            //	lambda 表达式
            Say((b) => {                //匿名函数
                return(b.ToString());
            });
            #endregion

            Dog dog = new Dog();
            dog.HelloEvent += Say1;
            dog.SayHello();

            #region
            //线程
            Thread thread1 = new Thread(() => {
                Console.WriteLine("1");
            });
            thread1.Start();
            #endregion

            Console.ReadKey();
        }
示例#3
0
 private void AddChildNodesAsync(TreeNode n, bool pleasePopulateGrandKids)
 {
     DelegateAdd a = new DelegateAdd(AddChildnodes);
     a.BeginInvoke(n, pleasePopulateGrandKids, null, null);
 }
    public static int test()
    {
        var obj = new DelegateAdd();

        return(obj.method());
    }
        public void AddBegin(string sKey, TaskResultData oTast, AsyncCallback fCallback, object oParam)
        {
            DelegateAdd oDelegateAdd = new DelegateAdd(AddToMC);

            oDelegateAdd.BeginInvoke(sKey, oTast, null, null);

            m_oTaskResultDB.AddBegin(sKey, oTast, fCallback, oParam);
        }
示例#6
0
        static void Main(string[] args)
        {
            DelegateType delegateInstance = GetMethod();

            delegateInstance();
            delegateInstance();

            Console.WriteLine("\n 1 ***********************************************\n");

            DelegateType delegateInstance2 = delegate()
            {
                Console.WriteLine("Hello");
            };

            delegateInstance2 += delegate // делегат без скобок т.к. нет параметров
            {
                Console.WriteLine("Bonjour");
            };

            delegateInstance2();

            Console.WriteLine("\n 2 ***********************************************\n");

            DelegateAdd delegateAdd = delegate(int a, int b)
            {
                return(a + b);
            };

            Console.WriteLine(delegateAdd(10, 20));
            Console.WriteLine(delegateAdd(13, 21));

            Console.WriteLine("\n 3 ***********************************************\n");

            Foo <double> inst = new Foo <double>();

            inst.Fct(5.5);

            Console.WriteLine("\n 4 ***********************************************\n");

            DelegateAddGeneric <double> delegateInstance4 = delegate(double arg)
            {
                System.Console.WriteLine("Hello arg:{0}", arg);
            };

            delegateInstance4(5.5);

            DelegateAddGeneric <string> delegateInstance41 = delegate(string arg)
            {
                System.Console.WriteLine("Hello arg:{0}", arg);
            };

            delegateInstance41("DelegateAddGeneric::string");

            Console.WriteLine("\n 5 ***********************************************\n");

            //Анонимные методы особенно подходят для определения “малых” методов,
            //которые вызываются через делегат. Например, можно воспользоваться
            //анонимным методом, чтобы закодировать точку входа в поток:

            Thread thread = new Thread(delegate()
            {
                System.Console.WriteLine("ManagedThreadId:{0} Hello",
                                         Thread.CurrentThread.ManagedThreadId);
            });

            thread.Start();

            System.Console.WriteLine("ManagedThreadId:{0} Bonjour",
                                     Thread.CurrentThread.ManagedThreadId);

            //Другой классический пример подобного использования относится к созданию
            //(по месту инициализации) обработчиков событий:

            /*
             * _button.Click += delegate(object sender, System.EventArgs args)
             * {
             * System.Windows.Forms.MessageBox.Show("_button Clicked");
             * };
             */

            Console.WriteLine("\n 6 ***********************************************\n");
            //Захват локальных переменных

            DelegateTypeCounter counter1 = MakeCounter();
            DelegateTypeCounter counter2 = MakeCounter();

            System.Console.WriteLine(counter1());
            System.Console.WriteLine(counter1());
            System.Console.WriteLine(counter2());
            System.Console.WriteLine(counter2());
        }
示例#7
0
        private void AddChildNodesAsync(TreeNode n, bool pleasePopulateGrandKids)
        {
            DelegateAdd a = new DelegateAdd(AddChildnodes);

            a.BeginInvoke(n, pleasePopulateGrandKids, null, null);
        }
示例#8
0
 public static int EquivalentToDynamicMethod(DelegateAdd method, int parameter1, int parameter2)
 {
     return(method(parameter1, parameter2));
 }
	public static int test() {
		var obj = new DelegateAdd();
		return obj.method();
	}
示例#10
0
 public static int EquivalentToDynamicMethod(DelegateAdd method, int parameter1, int parameter2)
 {
     return method(parameter1, parameter2);
 }