James Michael Hare recently wrote a blog post about Char
static methods. He talks about using a method group to write less-wordy LINQ:
if (myString.Any(c => char.IsLower(c))) { xyzzy(); }
if (myString.Any(char.IsLower)) { xyzzy(); } // Less wordy FTW!
The equivalent in VB.NET would be:
If myString.Any(Function(c) Char.IsLower(c)) Then xyzzy()
If myString.Any(Char.IsLower) Then xyzzy() 'Compiler error
Sadly, I can't do the equivalent of C# here... the compiler tells me that Overload resolution failed because no accessible 'IsLower' accepts this number of arguments
... sadness. I thought it might be caused by me having Option Strict
on, but alas, that didn't work either.
I'm assuming method groups aren't availablet in VB.NET... Is there a similar feature available in VB.NET? Or any particular reason why this can't (won't) be done in VB.NET?
Function(c) DoSomethingWith(c)
mess, but not much shorter. Any idea how AddressOf works with overloads? It seems like each of the overloads forChar.IsLower
would be at different addresses, but the code says no... (I'll probably ask this as a separate question since I'm not having much luck finding an answer). – Arboriculture