‫欢迎回来｡
‫在这节课中, 你将学习匿名方法｡
‫匿名方法是没有名称的方法｡
‫好吧, 谁得到它？
‫而C sharp中的匿名方法可以使用delegate关键字来定义, 并且可以赋给一个delegate类型的变量｡
‫这意味着我们不必每次调用需要委托的方法时都定义自己的方法, 因为我们可能只想调用一次｡
‫因此, 每次需要时都定义一个专用的委托可能会很快破坏代码结构｡
‫在前面的例子中, 我们创建了一堆过滤器, 你可能还记得这里是adult,
‫是senior和所有的好东西｡
‫现在,
‫让我们继续创建两个额外的筛选器, 其中创建一个自定义布尔表达式作为筛选器, 另一个筛选器仅显示列表中的所有条目｡
‫那么我们继续, 转到显示所有人的主方法, 好吗？
‫我们在这里调用这个方法, 现在让我们创建一个新的过滤器委托｡
‫所以我将使用filter delegate关键字, 也就是我们在顶部设置的关键字｡
‫你会看到它需要返回一个布尔值, 并且它需要有一个person作为参数｡
‫所以我们称之为过滤器｡
‫这里我们需要再次使用delegate关键字, 然后我们可以使用需要传递的参数｡
‫你可以看到它仍然在抱怨, 因为首先, 我们需要在底部加一个分号,
‫然后我们需要确保我们返回一个值｡
‫类型为boolean｡
‫因此, 并非所有代码路径都在匿名方法中返回值｡
‫所以这里已经写了匿名方法｡
‫我们要做的就是返回大于等于20和小于30的H值.
‫等于30｡
‫好吧, 我会的
‫差不多就是这样｡
‫因此, 我们在这里创建了一个名为filter的新变量, 其类型为filter delegate｡
‫所以这只是一个变量, 对吗？
‫然后, 我们为它分配一个匿名方法, 而不是一个已经定义的方法｡
‫然后我们要确保按照过滤器委托的指示, 返回一个布尔值.
‫所以这正是我们正在做的｡
‫如果这两个语句都为真, 则返回true｡
‫所以如果年龄大于等于20或者小于等于30｡
‫所以别忘了结尾的分号｡
‫这一点很重要｡
‫否则, 这将不起作用, 因为这基本上就像创建一个变量｡
‫就像int x等于3｡
‫这和我们在这里对过滤器委托所做的几乎一样, 但是它稍微复杂一些｡
‫所以今年你在这里看到的是一个匿名方法因为它没有名字, 但是它的行为基本上就像一个方法｡
‫现在我们可以做的就是打电话给展示人员｡
‫我们可以使用变量过滤器, 这样我们就可以通过一个过滤器｡
‫你可能还记得这个剧本, 人们总是有这样的结构,
‫你有一个标题就在这里你有一个标题, 然后你必须传入人物列表, 也就是人物对象, 对吗？
‫然后你需要在这里添加过滤器｡
‫我将使用我刚刚设置的过滤器, 也就是这个过滤器变量｡
‫所以现在这个filter变量是off类型的filter委托, 这是显示人员所需要的,
‫因为在这里你可以看到它需要一个filter委托类型｡
‫这真的很有趣, 因为一方面, 你可以创建一个方法,
‫遵循委托描述, 然后按照我们在这里看到的那样使用它｡
‫但是你也可以创建一个变量, 它使用一个匿名方法, 使用delegate关键字, 就像我们在这里做的那样,
‫然后把它安装在这个过滤器里面, 然后在这里使用那个过滤器｡
‫当然, 这不是孩子们, 而是20到30岁之间的人,
‫它会显示我们所有的人｡
‫让我们运行这段代码, 看看它是否有效｡
‫我们在这里看到20到30岁之间, 我们有阿纳托利, 他25岁, 但没有其他人｡
‫现在我们来看看匿名方法的另一种方法, 那就是我们可以直接把匿名方法作为参数传递.
‫所以让我们来做一个真实的快速｡
‫我们称之为“显示人员”方法, 这次我将显示所有人员, 对吗？
‫所以在座的所有人｡
‫但是现在我们需要传入, 你可以看到这里有一个过滤器委托｡
‫因此, 让我们继续创建一个匿名方法｡
‫为了做到这一点, 我们需要使用delegate关键字, 对吗？
‫他们会得到这样的结果, 我们当然需要遵循同样的指令｡
‫我们仍然需要确保我们传递的委托是filter类型的委托, 如果我们在顶部查看它的话｡
‫因此, 这里这个筛选器委托需要返回一个池, 并且它需要一个人｡
‫所以我们把person作为参数, 但当然, 正如我所说的, 我们还需要返回布尔值｡
‫基本上我们可以这样称呼它｡
‫这是一行非常精简的代码｡
‫这里发生了很多事｡
‫我们在显示人物, 但这里还有一个过滤器, 这个过滤器接受所有的人物,
‫它只返回true, 因为我们在这里放入哪个人物并不重要｡
‫基本上就是这样｡
‫否则, 当然你也可以这样写, 这样可能会更可读一点｡
‫这是我们的匿名方法, 我们将它作为第三个参数传递, 因为我们只是在过滤器委托之后传递它｡
‫准备好了｡
‫所以你看这里我们返回了一头公牛, 我们把一个人作为参数｡
‫所以现在你看到了委托的力量, 因为它们超级灵活｡
‫他们只是想让你遵循某种结构｡
‫剩下的就看你的了｡
‫这为开发人员在处理委托时提供了很大的灵活性｡
‫好吧, 我会的
‫这是对匿名方法的一点介绍｡
‫接下来, 我们来看一下Lambda表达式｡