9

James Michael Hare 最近写了一篇关于Char静态方法的博客文章。他谈到使用方法组来编写简洁的 LINQ:

if (myString.Any(c => char.IsLower(c))) { xyzzy(); }
if (myString.Any(char.IsLower)) { xyzzy(); } // Less wordy FTW!

VB.NET 中的等价物是:

If myString.Any(Function(c) Char.IsLower(c)) Then xyzzy()
If myString.Any(Char.IsLower) Then xyzzy() 'Compiler error

可悲的是,我不能在这里做与 C# 等效的操作……编译器告诉我Overload resolution failed because no accessible 'IsLower' accepts this number of arguments……悲伤。我以为这可能是因为我一直Option Strict在做,但可惜,这也不起作用。

我假设方法组在 VB.NET 中不可用...在 VB.NET 中是否有类似的功能可用?或者有什么特殊原因不能(不会)在 VB.NET 中完成?

4

1 回答 1

12

等效的 VB 代码为:

If myString.Any(AddressOf Char.IsLower) Then xyzzy()
于 2012-10-09T16:03:16.490 回答