list(of type)的删除,如何使用removeall?
时间:2007-07-19
来源:互联网
我定义了一个class
public cls
public class aa
public a as string
public b as string
end class
public class bb
public c as new list(of aa)
end class
end class
定义类的变量
dim d as new cls
我在d中使用d.bb.add()方法添加了一些值,现在想全部删除它们,用d.bb.removeall()方法时出错,说什么没有Match。
我不是很懂,有那位大侠可以指教一下如何才能全部删除。
public cls
public class aa
public a as string
public b as string
end class
public class bb
public c as new list(of aa)
end class
end class
定义类的变量
dim d as new cls
我在d中使用d.bb.add()方法添加了一些值,现在想全部删除它们,用d.bb.removeall()方法时出错,说什么没有Match。
我不是很懂,有那位大侠可以指教一下如何才能全部删除。
作者: randwind 发布时间: 2007-07-19
顶一下。
作者: ivyorg 发布时间: 2007-07-20
Public Class Form1
Public c As New List(Of aa)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a As New aa
a.a = "dd "
a.b = "dd "
Me.c.Add(a)
'添加到集合
MsgBox(c.Count.ToString)
Me.c.Clear()
'清除所有
MsgBox(c.Count.ToString)
End Sub
End Class
Public Class aa
Public a As String
Public b As String
End Class
Public c As New List(Of aa)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a As New aa
a.a = "dd "
a.b = "dd "
Me.c.Add(a)
'添加到集合
MsgBox(c.Count.ToString)
Me.c.Clear()
'清除所有
MsgBox(c.Count.ToString)
End Sub
End Class
Public Class aa
Public a As String
Public b As String
End Class
作者: caoqinghua 发布时间: 2007-07-20
如何删除指定某些元素,而不是全部删除?像如果指定要求只删除a="aa",b="bb"呢,如何做?
作者: dombo 发布时间: 2007-11-24
等等看
作者: shen3649 发布时间: 2011-11-30
RemoveAll(match As Predicate(Of T))
RemoveAll函数的功能:删除与指定的谓词所定义的条件相匹配的所有元素,即给定一个规则去判断各个元素是否满足该规则,如果满足则删除该元素。返回值是删除的个数。
Predicate(Of T)是泛型委托,表示定义一组条件(规则)并确定指定对象是否符合这些条件的方法。可以把委托看成是一种函数的类。Of T中的T的数据类型要和受委托的数据类型相同。
RemoveAll函数的运用方法:(1)先定义一个函数,该函数的返回值是Boolean,参数和受委托对象的类型一致,按ByVal方式传递;(2)把该函数的地址直接作为RemoveAll函数中的match。
该函数在执行时,会依次把受委托对象List的各个元素交给委托函数进行规则判断,如果返回值为True,表示满足规则,就可以删除该元素,否则不删除。
例如:已知一个列表,包含10个名字,现要把10个名字中所有姓“张”的名字删除。
Module Module1
'定义的函数,该函数返回值是Boolean型,
' 参数与委托对象数据类型一致
'函数的代码:对委托对象要进行什么样的规则,
' 满足规则返回True,否则返回False
Private Function check(ByVal s As String) As Boolean
If s Like "张*" Then '姓“张”返回True,否则False
Return True
Else
Return False
End If
End Function
Sub Main()
Dim arr() As String = {"和二", "张三", "李四", _
"王五", "马六", "和三", _
"张四", "李五", "王六", "小七"}
'定义List对象并初始化值为arr数组
Dim lt As New List(Of String)(arr)
'打印当前数组中的元素
For Each s As String In lt
Console.Write(s & Space(2))
Next
Console.WriteLine()
'使用RemoveAll删除满足规则的元素
'定义一个委托类型,of后数据类型同要委托的函数参数
Dim match As Predicate(Of String)
'AddressOf相当于提取函数check的地址
match = AddressOf check
lt.RemoveAll(match)
'上面三行代码可写成:
'Dim match As New Predicate(Of String)(AddressOf check)
'lt.RemoveAll(match)
'或写成下面一行代码:
'lt.RemoveAll(AddressOf check)
For Each s As String In lt
Console.Write(s & Space(2))
Next
Console.ReadLine()
End Sub
End Module
RemoveAll函数的功能:删除与指定的谓词所定义的条件相匹配的所有元素,即给定一个规则去判断各个元素是否满足该规则,如果满足则删除该元素。返回值是删除的个数。
Predicate(Of T)是泛型委托,表示定义一组条件(规则)并确定指定对象是否符合这些条件的方法。可以把委托看成是一种函数的类。Of T中的T的数据类型要和受委托的数据类型相同。
RemoveAll函数的运用方法:(1)先定义一个函数,该函数的返回值是Boolean,参数和受委托对象的类型一致,按ByVal方式传递;(2)把该函数的地址直接作为RemoveAll函数中的match。
该函数在执行时,会依次把受委托对象List的各个元素交给委托函数进行规则判断,如果返回值为True,表示满足规则,就可以删除该元素,否则不删除。
例如:已知一个列表,包含10个名字,现要把10个名字中所有姓“张”的名字删除。
Module Module1
'定义的函数,该函数返回值是Boolean型,
' 参数与委托对象数据类型一致
'函数的代码:对委托对象要进行什么样的规则,
' 满足规则返回True,否则返回False
Private Function check(ByVal s As String) As Boolean
If s Like "张*" Then '姓“张”返回True,否则False
Return True
Else
Return False
End If
End Function
Sub Main()
Dim arr() As String = {"和二", "张三", "李四", _
"王五", "马六", "和三", _
"张四", "李五", "王六", "小七"}
'定义List对象并初始化值为arr数组
Dim lt As New List(Of String)(arr)
'打印当前数组中的元素
For Each s As String In lt
Console.Write(s & Space(2))
Next
Console.WriteLine()
'使用RemoveAll删除满足规则的元素
'定义一个委托类型,of后数据类型同要委托的函数参数
Dim match As Predicate(Of String)
'AddressOf相当于提取函数check的地址
match = AddressOf check
lt.RemoveAll(match)
'上面三行代码可写成:
'Dim match As New Predicate(Of String)(AddressOf check)
'lt.RemoveAll(match)
'或写成下面一行代码:
'lt.RemoveAll(AddressOf check)
For Each s As String In lt
Console.Write(s & Space(2))
Next
Console.ReadLine()
End Sub
End Module
作者: tdyan 发布时间: 2011-12-15
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28