小编Die*_*wer的帖子

将AddressOf传递给VB.NET中的函数以使用AddHandler

我需要将函数的引用传递给VB.NET中的另一个函数.如何才能做到这一点?

我的函数需要在内部使用AddHandler,我需要为它传递一个处理函数.我的代码显然不起作用,但它传达了我需要的想法.

Public Function CreateMenuItem(ByVal Name As String, ByRef Func As AddressOf ) As MenuItem
   Dim item As New MenuItem

   item.Name = Name
   'item.  other options

   AddHandler item.Click, AddressOf Func

   Return item
End Function
Run Code Online (Sandbox Code Playgroud)

还有另一种方法吗?AddHandler需要以某种方式设置为函数中传递的参数...

.net vb.net addressof addhandler

9
推荐指数
3
解决办法
3万
查看次数

具有多个构造函数的C++ init成员变量

通常构造函数应如下所示:

//ctor1
SmallSim::SmallSim()
:mSimInit(false)
,mServersCreated(false)
,mTotalCPUTime(0)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

如果我有多个构造函数会发生什么?

它在我看来,如果我从第二个调用第一个构造函数,第一个构件变量就不会被初始化.

//ctor2
SmallSim::SmallSim(bool ImmediateExecution, bool Report)
{
    SmallSim();

    ...
}
Run Code Online (Sandbox Code Playgroud)

那么我需要在每个构造函数上重复:mSimInit(false),mServersCreated(false),mTotalCPUTime(0)吗?

据我所知使用InitClassVars()不是最好的方法...

//ctor1
SmallSim::SmallSim()
{
    InitClassVars();

    ...
}

//ctor2
SmallSim::SmallSim(bool ImmediateExecution, bool Report)
{
    InitClassVars();

    ...
}

//Common function for init of member vars for multiple constructors
void SmallSim::InitClassVars(void)
{
    mSimInit = false;
    mServersCreated = false;
    mTotalCPUTime = 0;
}
Run Code Online (Sandbox Code Playgroud)

是否有正确的方法来初始化成员变量而不在每个构造函数上重复init?

c++

4
推荐指数
2
解决办法
5777
查看次数

标签 统计

.net ×1

addhandler ×1

addressof ×1

c++ ×1

vb.net ×1