在vb.net中是否有类似于;加上;但是功能呢?

在vb.net中是否有类似于;加上;但是功能呢?,vb.net,function,with-statement,Vb.net,Function,With Statement,我在一行中反复使用同一个函数,有没有一种方法可以 with basicmove() {(r),(u, 20),(r) end with 而不是 basicmove(r) basicmove(u, 20) basicmove(r) 编辑:或 basicmove(l, 5) basicmove(d, 3) basicmove(l, 21) basicmove(u, 5) 不,不可能。但是,如果参数的类型相同,则可以使用基本类型的列

我在一行中反复使用同一个函数,有没有一种方法可以

with basicmove()
{(r),(u, 20),(r)
end with
而不是

    basicmove(r)
    basicmove(u, 20)
    basicmove(r)
编辑:或

        basicmove(l, 5)
    basicmove(d, 3)
    basicmove(l, 21)
    basicmove(u, 5)

不,不可能。但是,如果参数的类型相同,则可以使用基本类型的列表和
list.ForEach
或每个循环的普通

moves.ForEach(Function(r) basicmove(r))

您可以创建一个具有适当属性的新类和一个
列表(移动)

我不完全确定这是否满足了您的所有要求,但它可能会给您一个想法

编辑:根据更新的问题,我有另一个解决方案。这需要理解编程中的语言。您只需将所有“坐标”加载到一个数组中,然后对它们进行迭代,并按照它们输入数组的相同顺序执行操作

Sub Main()
    ' multi-dimensional array of moves (there are plenty of way to create this object if this is confusing)
    Dim myList(,) As Object = New Object(,) { _
                                {"l", 5}, _
                                {"d", 3}, _
                                {"l", 21}, _
                                {"u", 5} _
                            }

    ' iterate the array and perform the moves.
    For x As Integer = 0 To myList.GetUpperBound(0)
        ' getting coordinates from the first & second dimension
        basicmove(myList(x, 0), myList(x, 1))
    Next

    Console.ReadLine()
End Sub

Private Sub basicmove(ByVal a As String, ByVal b As Integer)
    Console.WriteLine("param1:" & a & ",param2:" & b)
End Sub
请原谅c#语法。这是未经测试的,因此可能存在错误

public class myWith{
public List<Object> params{get;set;}
   public with(Action<Object> function){
      params.ForEach(p=>function(p));
   }     
}
公共类myWith{
公共列表参数{get;set;}
公共服务(行动功能){
参数ForEach(p=>函数(p));
}     
}
使用的想法是:

new myWith(x=>doStuff(x)){
    params = new List<Object>{r, {u,20}, r}
}
newmywith(x=>doStuff(x)){
params=新列表{r,{u,20},r}
}

希望这能让大家明白这不是最漂亮的,尽管它可以使用隐式数组:

Private Sub MakeCalls()
    Dim r As Integer = 1 : Dim u As Integer = 2
    For Each o In {({r}), ({u, 20}), ({r})}
        basicmove(o)
    Next
End Sub     
Private Sub basicmove(params() As Integer)
    For Each i As Integer In params
        Debug.Print(i.ToString)
    Next
End Sub

你可以写一个重载
With
用于对象,作为一个选项,您可以将参数放入数组,然后在向函数传递数组元素的循环中调用basicmove()。