Анонимные методы с типом возврата в .Net - PullRequest
0 голосов
/ 03 февраля 2010

Это вопрос к моему любопытству, потому что я знаю, что есть и другие способы обойти эту проблему.

У меня есть свойство в моем классе "Item" - "MyProperty" - которое я хочу оценить.Я хочу перебрать коллекцию - "MyItemCollection" - и, если есть класс "Item", чье свойство "MyProperty" не является ничем, я хочу установить логический флаг, чтобы указать, что коллекция содержит ненулевое MyProperty для любого изего объекты "Item".

Private ContainsPOF = Function() (From thisItem As Item In MyItemCollection Where Item.MyProperty IsNot Nothing Select item).Count > 0

Это дает мне предупреждение о "Decleration переменной без предложения As"; тип объекта предположен ", поэтому я попытался

Private ContainsPOF As Boolean = Function() (From thisItem As Item In MyItemCollection Where Item.MyProperty IsNot Nothing Select item).Count > 0 subc).Count > 0

Thisоднако дает мне сообщение об ошибке: «Выражение Lamda не может быть преобразовано в« Boolean », поскольку« Boolean »не является типом делегата»

В любом случае можно сделать возвращение этого типа функции безопасным, или я должен просто использоватьдругой метод (функция старого стиля)?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 03 февраля 2010

Я думаю, что вы хотите объявить это как Func(Of Boolean) вместо:

Private ContainsPOF As Func(Of Boolean) = [...]

Насколько я понимаю, это не создает свойство (согласно вашему первому абзацу). Почему бы не объявить его как обычное свойство?

0 голосов
/ 03 февраля 2010

это может быть понятнее в виде выражения linq, соответствующего любому элементу в коллекции, который не является нулевым, например:

ContainsPDF = ThisCollection.Any(x=>x.MyClass IsNot Nothing);
...