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); }
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(); }
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); }
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()); }
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(); }
public static int EquivalentToDynamicMethod(DelegateAdd method, int parameter1, int parameter2) { return method(parameter1, parameter2); }