C# 我如何构建此的手动版本?
我有一个名为C# 我如何构建此的手动版本?,c#,extension-methods,C#,Extension Methods,我有一个名为Package的类,它包含List和string成员,对应于依赖项列表和包的名称。它覆盖Equals(),根据包名提供相等性。我正在尝试构建这一行的手动版本: Uninstallable.RemoveAll(pkg=>Installable.Contains(pkg)) 其中可卸载和可安装是列表 我尝试使用Contains()方法: publicstaticboolmycontains(此列表包,包inPkg) { foreach(包装中的包装) { 如果(包装等于(单位千克)) {
Package
的类,它包含List
和string
成员,对应于依赖项列表和包的名称。它覆盖Equals()
,根据包名提供相等性。我正在尝试构建这一行的手动版本:
Uninstallable.RemoveAll(pkg=>Installable.Contains(pkg))代码>
其中可卸载
和可安装
是列表
我尝试使用Contains()
方法:
publicstaticboolmycontains(此列表包,包inPkg)
{
foreach(包装中的包装)
{
如果(包装等于(单位千克))
{
返回true;
}
}
返回false;
}
如何使用此扩展方法构建与上述行相同的功能,但不使用lambda?您可以使用此foreach循环:
foreach ( var item in Uninstallable.ToList() )
if ( Installable.MyContains(item ) )
Uninstallable.Remove(item)
我们需要调用ToList
,因为我们修改了Uninstallable
否则,您可以使用for循环:
for ( int index = Uninstallable.Count - 1; index >= 0; index-- )
if ( Installable.MyContains(Uninstallable[index]) )
Uninstallable.RemoveAt(index);
因为我们通过倒计时来删除项目,所以没有问题。您可以使用此foreach循环:
foreach ( var item in Uninstallable.ToList() )
if ( Installable.MyContains(item ) )
Uninstallable.Remove(item)
我们需要调用ToList
,因为我们修改了Uninstallable
否则,您可以使用for循环:
for ( int index = Uninstallable.Count - 1; index >= 0; index-- )
if ( Installable.MyContains(Uninstallable[index]) )
Uninstallable.RemoveAt(index);
因为我们减少了删除项的次数,所以没有问题。这是一个如何简化扩展的示例
publicstaticboolmycontains(此列表包,包inPkg)
{
退货包装。任何(x=>x.Equals(inPkg));
}
这是一个如何简化扩展的示例
publicstaticboolmycontains(此列表包,包inPkg)
{
退货包装。任何(x=>x.Equals(inPkg));
}
我不明白。最后的方法是contains方法,它不“构建”任何东西。您需要滚动自己的MyRemove
,它直接使用MyContains
。这就是我请求帮助的内容。我不知道从哪里开始使用MyRemove
方法。我想我说得不够清楚,对不起,我不明白。最后的方法是contains方法,它不“构建”任何东西。您需要滚动自己的MyRemove
,它直接使用MyContains
。这就是我请求帮助的内容。我不知道从哪里开始使用MyRemove
方法。我想我说得不够清楚,对不起,冻糕!谢谢,冻糕!谢谢。