How do you initialize a System.Action? If you do this:
Action OnEvent = null;You will have to null-check this delegate on every invocation.
To avoid null-checks, you can initialize it to a lambda that does nothing (in other word, a "No-Op"):
Action OnEvent = delegate { };But everytime you write an anonymous method, there is an allocation. So this will allocate 4 different runtime methods, all doing nothing:
Action OnEvent1 = delegate { };
Action OnEvent2 = delegate { };
Action OnEvent3 = delegate { };
Action OnEvent4 = delegate { };CLSS.Constants.NoOp is a collection of statically-defined No-Op methods that can be used in any place you would want to use a no-op anonymous method to avoid unnecessary memory allocations.
Example:
using CLSS;
Action OnEvent1 = NoOp.Method;
Action OnEvent2 = NoOp.Method;
Action OnEvent3 = NoOp.Method;
Action OnEvent4 = NoOp.Method;Multi-argument No-Op:
using CLSS;
Action<float, int> OnEvent = NoOp.Method<float, int>;