相关疑难解决方法(0)

使用DirectCast,CType,TryCast转换数据类型

自从我在2005年从VB6迁移到VB.NET以来,我一直在使用CType从一种数据类型转换到另一种数据类型.我这样做是因为它只是更快地输入,以前存在于VB6中我不知道为什么我必须使用DirectCast,如果它们之间显然没有区别.

我偶尔会使用TryCast,因为我知道有时候施法会失败.但是我无法区分CType和DirectCast.

谁能告诉我简单的简单英语有什么区别两者(CType和DirectCast)有什么区别?添加使用内容的示例也会有所帮助.

vb.net casting ctype directcast

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

VB.NET中C#的C#等价物是什么?

我试图将MSDN文章创建动态数据输入用户界面中提供的示例转换为C#,但我坚持使用以下代码:

CType(dq, IUIBuildingBlock).QuestionText = reader("QuestionText")
Run Code Online (Sandbox Code Playgroud)

如何将上述VB.NET语句转换为C#?

casting ctype equivalent vb.net-to-c#

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

为什么Cast(CType/DirectCast)控件与隐式转换

假设我在webforms GridViewRow中有一个控件...

<asp:Literal ID="ltl_abc" runat="server" />
Run Code Online (Sandbox Code Playgroud)

在RowDataBound事件中,我可以使用以下任何方法访问控件.我一直以来一直使用DirectCast:

Protected Sub gv_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles gv.RowDataBound
    Select Case e.Row.RowType
        Case DataControlRowType.DataRow
            ' 1) Dim ltl_abc As Literal = DirectCast(e.Row.FindControl("ltl_abc"), Literal)
            ' 2) Dim ltl_abc As Literal = CType(e.Row.FindControl("ltl_abc"), Literal)
            ' 3) Dim ltl_abc As Literal = e.Row.FindControl("ltl_abc")
Run Code Online (Sandbox Code Playgroud)

使用任何特定方法有什么好处吗?我猜DirectCast稍微有点效率,但可能容易出错,但隐式转换是否有任何危险(选项3)?

从历史上看,在我尝试为控件的属性实际赋值之前,我从未见过任何错误,这让我觉得这第一步不是那么重要吗?

请注意,这不是DirectCast与CType的讨论,更多的是关于在这里是否需要施法?

更新清晰

Protected Sub gv_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles gv.RowDataBound
    Select Case e.Row.RowType
        Case DataControlRowType.DataRow

            ' This works fine, but no explicit casting is done:
            Dim ltl_abc As …
Run Code Online (Sandbox Code Playgroud)

vb.net asp.net asp.net-4.5

3
推荐指数
1
解决办法
2484
查看次数