How does ConvertAll <Guid> (Guid.Parse) work?

At first I had such a line

List<Guid> ratingComparisonIds = ratingComparison.ConvertAll<Guid>(o => Guid.Parse(o));

Then ReSharper gave me a hint that I can convert it to a group of methods. The result of this operation is

List<Guid> ratingComparisonIds = ratingComparison.ConvertAll<Guid>(Guid.Parse);

I got confused in the syntax .. how and why does it work? I mean, there are no parameters for the parse method. Magic, I would say.

Update

Even more compact conversion

List<Guid> ratingComparisonIds = ratingComparison.ConvertAll(Guid.Parse);
+3
source share
2 answers

It uses group method conversion. He does something like this:

// Very long-winded C# 1 syntax
Converter<String, Guid> converter = new Converter<String, Guid>(Guid.Parse);
List<Guid> ratingComparisonIds = ratingComparison.ConvertAll(converter);

// Simpler C# 2 syntax
Converter<String, Guid> converter = Guid.Parse;
List<Guid> ratingComparisonIds = ratingComparison.ConvertAll(converter);

Now insert the variable and you will get the source code. Does that mean clearer?

+3
source

ConvertAll ( ) Converter<string,Guid> - , string a Guid. Guid.Parse - , new Converter<string,Guid>(Guid.Parse) :

Converter<string,Guid> conv = Guid.Parse; // perfectly valid
List<Guid> ratingComparisonIds = ratingComparison.ConvertAll<Guid>(conv);

- :

static Guid <>____blah(string o) { return Guid.Parse(o); }

Guid.Parse .

+3

Source: https://habr.com/ru/post/1788421/


All Articles