What is Action<string>
, how can it be used?
It is a delegate with one parameter, this being a string.
Usefull because it means you do not have to create delegates anymore for actions as long as you can use a standard action for them (i.e. the number of parameters is fixed, no default values and you can just use an existing action).
This is a delegate to a function with the signature
void Bla(string parameter)
. You can use this to pass functions to other functions.
For instance you can do this
Action<string> action = (x => Console.WriteLine(x));
new List<string>{"1","2","3"}.ForEach(action);
to print all characters to the console
It is basically just a delegate that does not return a value.
Have a look here: http://msdn.microsoft.com/en-us/library/018hxwa8.aspx
Action<string>
would just be a delegate of a mehtod that excepted a single string parameter and did not return anything.
From the documentation:
Encapsulates a method that has a single parameter and does not return a value.
Usage example (taken from the documentation and simplified):
Action<string> myMessageShowAction;
if (...)
myMessageShowAction = s => Console.WriteLine(s);
else
myMessageShowAction = ... /* some other way to show a message */
myMessageShowAction("Hello, World!"); // this will use whatever action has been put into myMessageShowAction
Delegates allow you to store anonymous methods (or pointers to existing methods) in a variable. Action<string>
is a delegate for a method that takes one string as a parameter and does not return a value.
public void ValidateInput(string input)
{
//some code
}
public void test()
{
Action<string> action = ValidateInput;
}
Action
is a standard delegate that has one to 4 parameters (16 in .NET 4) and doesn't return value. It's used to represent an action.
Action<String> print = (x) => Console.WriteLine(x);
List<String> names = new List<String> { "pierre", "paul", "jacques" };
names.ForEach(print);
There are other predefined delegates :
Predicate
, delegate that has one parameter and returns a boolean.Predicate<int> predicate = ((number) => number > 2); var list = new List<int> { 1, 1, 2, 3 }; var newList = list.FindAll(predicate);
Func
is the more generic one, it has 1 to 4 parameters (16 in .NET 4) and returns something