Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

String.Contains doesn't require parameters in c#?

I've stumbled upon this code:

var knownSeparators = new[] { "\\", "/", "|", "." };
return knownSeparators.FirstOrDefault(path.Contains);

where path is a string and the return value should be a string as well.

Allthough path.Contains' intellisense suggests a parameter, it works fine without one.

How does this work exactly? Is there any way to copy this behavior in vb.net?

like image 241
Terry Avatar asked May 09 '12 08:05

Terry


1 Answers

FirstOrDefault takes a delegate (a Func<T, bool>) and this call is creating a delegate from the method group. It's equivalent to:

Func<string, bool> predicate = path.Contains;
return knownSeparators.FirstOrDefault(predicate);

I suspect in VB.NET you could do:

Return knownSeparators.FirstOrDefault(AddressOf path.Contains)

... but I couldn't tell for sure without trying it.

like image 113
Jon Skeet Avatar answered Oct 22 '22 17:10

Jon Skeet