我有一个RichTextBoxes数组,我想使用Array.ForEach初始化它们。
我做了以下尝试但没有成功:
Dim aRTB(5) as RichTextBox
Array.ForEach(aRTB, Function() New RichTextBox)
这段代码是唯一让它通过编译器的代码,但它不会初始化数组的任何部分。
未能通过编译器的代码包括:
Array.ForEach(aRTB, Function() Return New RichTextBox)
Array.ForEach(aRTB, Function(rtb as RichTextBox) rtb = New RichTextBox)
我意识到我可以轻松地设置一个常规循环(For,Do,While)来执行相同的操作,但我希望看到这种方式是否可行。
感谢您的帮助。
答案 0 :(得分:1)
我有一个RichTextBoxes数组,我想使用Array.ForEach初始化它们。
你做不到。 Array.ForEach对数组的每个元素执行一个操作,即它将数组的元素传递给函数一个参数:
Array.ForEach(aRTB, Sub(rtb as RichTextBox) ...do something with rtb...)
参数为ByVal
,即你不能用它来更改数组的内容:
Array.ForEach(aRTB, Sub(ByRef rtb as RichTextBox) rtb = New RichTextBox())
' Yields compilation error:
' Nested sub does not have a signature that is compatible
' with delegate 'System.Action(Of RichTextBox)
由于您的数组最初是空的,因此无法对其上的Array.ForEach执行任何有用的操作。
很抱歉,您必须使用经典的For
循环:
For i = 0 To 5
aRTB(i) = New RichTextBox()
Next
0 To 5
不是拼写错误...在VB.NET数组声明中指定上限,而不是大小。