将方法作为参数.net传递

时间:2014-02-03 19:01:12

标签: vb.net

今天我一直在搜索我的问题,但没有成功。我甚至不知道它是否可能,但我会在这里试试运气。

让我说我在课堂上的某个地方有这个功能:

Public Sub sub1(i as Integer, uc as UserControl)
    ...
End Sub

还有一些是其他方式,在另一种方法中我有这个电话:

sub1(46, new UserControl())

问题是我想传递一个UserControl,比方说,背景为蓝色,但必须在方法调用中定义。换句话说,我想传递一个对象,该对象具有在构造函数之外修改的一些属性,并且所有内容都必须在方法调用内完成。我在想这样的事情:

sub1(9387, {Dim uc as new UserControl()
            uc.BackColor = Color.Blue
            return uc} )

据我所知,我可以在方法调用之前定义UserControl并修改它,但我的实际情况比这更复杂。无论如何,我只是想知道它是否有可能,如果是,请给我一些例子。在我的研究中,我发现我可以做一些委托或使用一些“lambda”表达,但我没有找到一个完美解决我的问题的解决方案。而且,我不能在方法调用之外写一个代码字符。

提前致谢!

3 个答案:

答案 0 :(得分:3)

像这样:

sub1(9387, New UserControl With {.BackColor = Color.Blue})

答案 1 :(得分:0)

如果我理解你的问题,你可以简单地使用属性初始化器:

sub1(9387, New UserControl With { .BackColor = Color.Blue })

答案 2 :(得分:0)

VB.NET中可以使用

Immediately-invoked functions

Dim result As Integer = (Function() As Integer
                             Return 1
                         End Function)()

或者在你的例子中:

sub1(9387, (Function()
                Dim uc As New UserControl()
                uc.BackColor = Color.Blue
                Return uc
            End Function)())