Beginning C# 7 Hands-On:Advanced Language Features
上QQ阅读APP看书,第一时间看更新

Making an anonymous function or method

Now, if you want, you can also do stuff that does not involve names. For example, you can enter the following next:

vals.ForEach(delegate (double x)

Next, we'll define the body, or the logic, between a set of curly braces. This is a nameless or anonymous one. For example, you can enter the following below this line (notice that you close with a parenthesis and semicolon after the closed curly brace):

{
    sampLabel.Text += "<br>" + Math.Pow(x, 3);
});

This one does something similar to the previous line. The only difference is that we are not calling anything named; we are just defining an anonymous function, a nameless function using a delegate keyword. This does accept one value, of course, the x value. Then you cube the x value; Math.Pow(x, 3) means, cube it and then display it on the label using += to append and <br> to push down a line, as usual.

Now, in the next stage, you can also do stuff such as the following, which is quite interesting:

Thread td = new Thread(delegate ())
Believe it or not, though it isn't recommended, after new Thread you can even can type dele instead of delegate, in this case.

Now, when you make an object of this type, you can also create a delegate. So, when you make this Thread object, you're also making an anonymous function. In other words, you're sending a piece of processing so that it runs on its own thread, and then you can stick in stuff such as the following:

{
List<double> arrs = new List<double>(new double[] { 1, 4, 5, 3, 53, 52 });arrs.Sort();arrs.ForEach(x => sampLabel.Text += $"<br>{x}");
});

Note again that here you close with a parenthesis and semicolon after the closing curly brace.