相关疑难解决方法(0)

VB.NET的隐藏功能?

我已经学习了很多浏览C#的隐藏功能,当我找不到类似于VB.NET的东西时,我感到很惊讶.

那么它的一些隐藏或鲜为人知的特征是什么?

vb.net hidden-features

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

DirectCast具有性​​能和延迟/早期绑定有什么影响?

我一直认为这DirectCast()是相当便宜,性能和内存方面的,并且它基本上是一种帮助我使用IntelliSense的方法,例如在事件处理程序中:

Public Sub myObject_EventHandler(sender As Object, e As System.EventArgs)
    'Explicit casting with DirectCast
    Dim myObject As myClass = DirectCast(sender, myClass)

    myObject.MyProperty = "myValue"
End Sub
Run Code Online (Sandbox Code Playgroud)

我认为这对于我作为开发人员来说更好,但对于编译的代码和最终的性能也是如此,因为它启用了"早期绑定"而不是...

Public Sub myObject_EventHandler(sender As Object, e As System.EventArgs)
    'No casting at all (late binding)
    myObject.MyProperty = "myValue"
End Sub
Run Code Online (Sandbox Code Playgroud)

...如果我正确地得到了这些术语,它也可以编译和运行,但使用"后期绑定".即假设它sender实际上是一个myClass对象.

关于性能,延迟/早期绑定或其他任何事情,上面的第一个片段和下面的片段之间有什么区别:

Public Sub myObject_EventHandler(sender As Object, e As System.EventArgs)
    'Implicit casting via variable declaration
    Dim myObject As myClass = sender

    myObject.MyProperty = "myValue"
End Sub
Run Code Online (Sandbox Code Playgroud)

显式DirectCast()调用是有用/有害还是在编译器优化代码后没有区别?

vb.net performance directcast

10
推荐指数
1
解决办法
519
查看次数

VB CStr,CDate,CBool​​等与DirectCast相比,无需转换即可进行投射

除非我需要进行实际转换,否则我通常会避免使用VB的内置转换函数(CStr,CDate,CBool​​,CInt等).如果我只是在演员,从一个对象说到一个字符串,我通常使用DirectCast或TryCast,假设CStr等正在做一些我不需要的额外的东西.但有时DirectCast语法有点麻烦,如下例所示.

Dim value1 As String
Dim value2 As String
Using cn As New SqlConnection(cnStr)
    Using cmd as New SqlCommmand(sqlStr, cn)
        Using reader = cmd.ExecuteReader()
            While reader.Read()
                value1 = DirectCast(reader("COLUMN1"), String)
                value2 = CStr(reader("COLUMN1"))
            End While
        End Using
    End Using
End Using
Run Code Online (Sandbox Code Playgroud)

SqlDataReader.Item返回一个Object,需要将其强制转换为String.CStr更易于阅读,输入和解释(IMO).

我的问题是,我使用哪一个是否重要?我应该选择CStr(以及CDate和CBool​​等)而不担心我认为这些功能正在做的额外工作吗?

使用这些功能还有其他缺点吗?

vb.net type-conversion

4
推荐指数
1
解决办法
5831
查看次数