public MultiDelegate MulticastDelegateCombineInvoke() { MultiDelegate md1 = md1Field; MultiDelegate md2 = md2Field; MultiDelegate md3 = md3Field; MultiDelegate md4 = md4Field; MultiDelegate md5 = md5Field; MultiDelegate md6 = md6Field; MultiDelegate md7 = md7Field; MultiDelegate md8 = md8Field; MultiDelegate md9 = md9Field; MultiDelegate md10 = md10Field; MultiDelegate md = null; for (int i = 0; i < InnerIterationCount1000; i++) { md = (MultiDelegate)Delegate.Combine(md1, md); md = (MultiDelegate)Delegate.Combine(md2, md); md = (MultiDelegate)Delegate.Combine(md3, md); md = (MultiDelegate)Delegate.Combine(md4, md); md = (MultiDelegate)Delegate.Combine(md5, md); md = (MultiDelegate)Delegate.Combine(md6, md); md = (MultiDelegate)Delegate.Combine(md7, md); md = (MultiDelegate)Delegate.Combine(md8, md); md = (MultiDelegate)Delegate.Combine(md9, md); md = (MultiDelegate)Delegate.Combine(md10, md); } return(md); }
static void Main(string[] args) { // Single Cast Delegates clsMaths objMaths = new clsMaths(); PointertoFunction AddPtr = null; AddPtr = objMaths.Add; int resultAdd = AddPtr.Invoke(1, 2); Console.WriteLine("Result Add - {0}", resultAdd); PointertoFunction SubPtr = null; SubPtr = objMaths.Sub; int resultSub = SubPtr.Invoke(2, 1); Console.WriteLine("Result Sub - {0}", resultSub); //Multicast Delegates MultiDelegate MultiPtr = null; MultiPtr += objMaths.Addition; MultiPtr += objMaths.Substraction; MultiPtr.Invoke(3, 1); Console.ReadLine(); }
public void AddCommand(Action command) { Commands += delegate { command(); }; }
public void MulticastDelegateCombineInvoke() { MultiDelegate md = null; Object obj = new Object(); foreach (var iteration in Benchmark.Iterations) { MultiDelegate md1 = new MultiDelegate(this.Invocable2); MultiDelegate md2 = new MultiDelegate(this.Invocable2); MultiDelegate md3 = new MultiDelegate(this.Invocable2); MultiDelegate md4 = new MultiDelegate(this.Invocable2); MultiDelegate md5 = new MultiDelegate(this.Invocable2); MultiDelegate md6 = new MultiDelegate(this.Invocable2); MultiDelegate md7 = new MultiDelegate(this.Invocable2); MultiDelegate md8 = new MultiDelegate(this.Invocable2); MultiDelegate md9 = new MultiDelegate(this.Invocable2); MultiDelegate md10 = new MultiDelegate(this.Invocable2); using (iteration.StartMeasurement()) { md = (MultiDelegate)Delegate.Combine(md1, md); md = (MultiDelegate)Delegate.Combine(md2, md); md = (MultiDelegate)Delegate.Combine(md3, md); md = (MultiDelegate)Delegate.Combine(md4, md); md = (MultiDelegate)Delegate.Combine(md5, md); md = (MultiDelegate)Delegate.Combine(md6, md); md = (MultiDelegate)Delegate.Combine(md7, md); md = (MultiDelegate)Delegate.Combine(md8, md); md = (MultiDelegate)Delegate.Combine(md9, md); md = (MultiDelegate)Delegate.Combine(md10, md); } } md(obj, 100, 100); }
void Start() { multiDelegate += Print1; multiDelegate += Print2; multiDelegate(); }
static void Main(string[] args) { // Создаётся массив int[] array1 = { -2, 17, 23, 6, -5, 14, 0, -11, -2 }; // Создаётся делегат, в него записывается метод ShowArray // *Конкретный тип для обобщённого метода определяется автоматически // На основании типов делегата MultiDelegate multigate = ArrayUtils.ShowArray; // А затем к делегату добавляются другие методы multigate += ArrayUtils.ShowAvg; // В том порядке, в котором они добавляются multigate += ArrayUtils.ShowMax; // Они и будут вызываться multigate += ArrayUtils.ShowMin; multigate += ArrayUtils.ShowNormalize; // Вызов делегата запускает цепочку вызовов // Всех записанных в него методов multigate(array1); Console.WriteLine(); // Из делегата удаляются некоторые методы multigate -= ArrayUtils.ShowMin; multigate -= ArrayUtils.ShowMax; multigate -= ArrayUtils.ShowAvg; // Делегат вызывается снова // Теперь будут выполнены лишь оставшиеся методы multigate(array1); }
// Start is called before the first frame update void Start() { myMultiDelegate += PowerUp; myMultiDelegate += TurnRed; if (myMultiDelegate != null) { myMultiDelegate(); } }
// Start is called before the first frame update void Start() { cellSizeAllyUnitsPositions = (rightMostPosition.x - leffMostPosition.x) / (_maxAllyUnits - 1); allyUnits = new List <Unit>(); enemyUnits = new List <Unit>(); updateDelegate += _IANormal.UpdateIA; }
static void Main1(string[] args) { Sampleclass sc = new Sampleclass(); MultiDelegate del = Sampleclass.Add; del += Sampleclass.Sub; del += Sampleclass.Mul; del(10, 5); Console.ReadLine(); }
public void OnGUI() { myMultiDelegate += PowerUp; myMultiDelegate += TurnRed; if (myMultiDelegate != null) { myMultiDelegate(); } }
public void MulticastDelegateInvoke(int length) { MultiDelegate md = length == 100 ? md100Field : md1000Field; Object obj = objField; for (int i = 0; i < InnerIterationCount10000; i++) { md(obj, 100, 100); } }
void Awake() //eseguito all'inizio prima di start() e indipendentemente dal fatto che lo script component sia abilitato o meno { floorMask = LayerMask.GetMask("Terrain"); anim = GetComponent <Animator>(); playerRigidbody = GetComponent <Rigidbody>(); position = GetComponent <Transform>(); playerActions += Move; playerActions += Animate; }
void Start() { multiDelegate = multiDelegate + PowerUp + TurnRed; multiDelegate(); if (multiDelegate != null) { multiDelegate -= PowerUp; multiDelegate += TurnBlue; multiDelegate(); // 格納した順に実行されるので青色に上書きされる } }
void Start() { myMultiDelegate += PowerUp; // assign PowerUp method to the delegate myMultiDelegate += TurnRed; // assign TurnRed method to the same delegate if(myMultiDelegate != null) // avoid errors by checking for unassigned delegate { myMultiDelegate(); // call the multi-delegate } myMultiDelegate -= PowerUp; // unassign PowerUp method from delegate myMultiDelegate -= TurnRed; // unassign TurnRed method from delegate }
MultiDelegate myMultiDelegate; // member variable of type MultiDelegate void Start() { myMultiDelegate += PowerUp; // assign PowerUp method to the delegate myMultiDelegate += TurnRed; // assign TurnRed method to the same delegate if (myMultiDelegate != null) // avoid errors by checking for unassigned delegate { myMultiDelegate(); // call the multi-delegate } myMultiDelegate -= PowerUp; // unassign PowerUp method from delegate myMultiDelegate -= TurnRed; // unassign TurnRed method from delegate }
void Update() { if (Input.GetKeyDown(KeyCode.Space)) { myMultiDelegate += PowerUp; myMultiDelegate += TurnRed; } if (myMultiDelegate != null && Input.GetMouseButtonDown(0)) { myMultiDelegate(); } }
public void SetupMulticastDelegateCombineInvoke() { md1Field = new MultiDelegate(this.Invocable2); md2Field = new MultiDelegate(this.Invocable2); md3Field = new MultiDelegate(this.Invocable2); md4Field = new MultiDelegate(this.Invocable2); md5Field = new MultiDelegate(this.Invocable2); md6Field = new MultiDelegate(this.Invocable2); md7Field = new MultiDelegate(this.Invocable2); md8Field = new MultiDelegate(this.Invocable2); md9Field = new MultiDelegate(this.Invocable2); md10Field = new MultiDelegate(this.Invocable2); }
public void SetupMulticastDelegateInvoke() { objField = new Object(); for (long i = 0; i < 100; i++) { md100Field = (MultiDelegate)Delegate.Combine(new MultiDelegate(this.Invocable2), md100Field); } for (long i = 0; i < 1000; i++) { md1000Field = (MultiDelegate)Delegate.Combine(new MultiDelegate(this.Invocable2), md1000Field); } }
static void Main(string[] args) { Console.WriteLine("***A case study with a multicast delegate when we target non-void methods.***"); // Target MethodOne MultiDelegate multiDel = MethodOne; // Target MethodTwo multiDel += MethodTwo; // Target MethodThree multiDel += MethodThree; int finalValue = multiDel(); Console.WriteLine("The final value is {0}", finalValue); Console.ReadKey(); }
void Start() { // You can concatenate the methods by // using '+=' to delegate. myMultiDelegate += PowerUp; myMultiDelegate += TurnRed; // This is a safe way to check if // there are any methods stored in delegate // before executing the delegate. if (myMultiDelegate != null) { myMultiDelegate(); } }
public void MulticastDelegateInvoke(int length) { MultiDelegate md = null; Object obj = new Object(); for (long i = 0; i < length; i++) { md = (MultiDelegate)Delegate.Combine(new MultiDelegate(this.Invocable2), md); } foreach (var iteration in Benchmark.Iterations) { using (iteration.StartMeasurement()) md(obj, 100, 100); } }
void Start() { myDelegate = PrintNum; myDelegate(50); myDelegate = DoubleNum; myDelegate(50); //Stackar metodos myMultiDelegate += PowerUp; myMultiDelegate += TurnRed; if (myMultiDelegate != null) { myMultiDelegate(); } }
public static void Main() { DelegateClass obj = new DelegateClass(); // 클래스 객체 생성 MultiDelegate dg1, dg2, dg3; // 델리게이트 선언 dg1 = new MultiDelegate(obj.MethodA); // 델리게이트 객체 생성 dg2 = new MultiDelegate(obj.MethodB); // 델리게이트 객체 생성 dg3 = new MultiDelegate(obj.MethodC); // 델리게이트 객체 생성 // ... dg1 = dg1 + dg2; // 메소드 추가 dg1 += dg3; // 메소드 추가 dg2 = dg1 - dg2; // 메소드 제거 dg1(); Console.WriteLine("After dg1 call ..."); dg2(); Console.WriteLine("After dg2 call ..."); dg3(); }
static void Main(string[] args) { Console.WriteLine("***Example of a Multicast Delegate.***"); // Target a static method MultiDelegate multiDel = MethodOne; // Target another static method multiDel += MethodTwo; //Target an instance method multiDel += new OutsideProgram().MethodThree; multiDel(); //Reducing the delegate chain Console.WriteLine("\nReducing the length of delegate chain by discarding MethodTwo now."); multiDel -= MethodTwo; //The following invocation will call MethodOne and MethodThree now. multiDel(); Console.ReadKey(); }
private void Start() { myDelegate += PowerUp; myDelegate += TurnRed; myDelegate(); }
public void AddObject(StoppableObject stoppableObject) { myMultiDelegate += stoppableObject.SwitchOnOrOff; }
public void RemoveObject(StoppableObject stoppableObject) { myMultiDelegate -= stoppableObject.SwitchOnOrOff; }