VB.NET等价?

时间:2011-03-01 03:48:36

标签: c# vb.net

VB.NET中这个C#代码的等价物是什么:

UctlTest uctlTest;
uctlTest= (UctlTest)Page.LoadControl("UserControls/UctlTest.ascx");
if (plcTest.Controls.Count == 0)
    plcTest.Controls.Add(uctlTest);

UctlTest:用户控件

plcTest:PlaceHolder

我试过了:

Dim uctlTestVB As UctlTestVB
uctlTestVB = CType(Page.LoadControl("~/UserControls/UctlTestVB.ascx"), UctlTestVB)
If (Equals(uctlTestVB.Controls.Count, 0)) Then         
    plcTest.Controls.Add(uctlTestVB)
End If

但VB.NET中的计数等于1,而在C#中它等于0。

3 个答案:

答案 0 :(得分:3)

请注意,您的VB版本中有一个额外的"~"符号,但不在您的c#中:

uctlTest= (UctlTest)Page.LoadControl("UserControls/UctlTest.ascx");

VS

uctlTestVB = CType(Page.LoadControl("~/UserControls/UctlTestVB.ascx"), UctlTestVB)

答案 1 :(得分:0)

快速浏览一下您的代码正在检查不同控件的子计数。

C#: plcTest .Controls.Count

VS

VB: uctlTestVB .Controls.Count

然而,VB代码仍然将加载的控件添加到plcTest,但检查uctlTestVB实例的计数。

答案 2 :(得分:-1)

代码是等价的,你的控件可能不是。

为什么不在两个代码段中加载相同的控件并验证它们的工作方式是否相同。

或者使用调试器/观察窗口并查看两者中的Controls集合并了解它们的区别