我有此代码:
public static List<Phrase> selectedPhrases;
和
if (!App.selectedPhrases.Any(x => x.Viewed == false))
return;
有什么方法可以更改声明selectedPhrases的方式,以便我可以通过以下方式进行最后检查:
if (App.selectedPhrases.AllViewed())
return;
我听说过扩展方法,但是有可能像我的代码中那样为List创建一个扩展方法吗?
答案 0 :(得分:3)
您可以在列表上编写扩展方法,例如短语
public static class Extension
{
public static bool AllViewed(this List<Phrase> source)
{
return source.All(x=>x.Viewed)
}
}
顺便说一句,您不需要检查!Any(x=>c.Viewed==false)
,可以选择使用.All()扩展方法,如上面的代码所示
您可以阅读有关扩展方法here的语法的更多信息。
您可能也有兴趣通过查看一些源代码at referencesource来了解如何实现Linq扩展方法。
答案 1 :(得分:1)
您可以在静态类中创建扩展方法:
public static class PhraseExtensions
{
public static bool AllViewed(this List<Phrase> phrases)
{
return !phrases.Any(p => !p.Viewed);
// phrases.All(p => p.Viewed); would be better suited.
}
}
在此处查看有关扩展的文档:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/extension-methods