在视觉基础中投射?

Kre*_*dns 10 c# vb.net casting

我是一个被迫使用VB的C#程序员(呃!!!!).我想在一个方法中检查多个控件状态,在C#中这将完成如下:

if (((CheckBox)sender).Checked == true)
{
    // Do something...
}
else
{
    // Do something else...
}
Run Code Online (Sandbox Code Playgroud)

那我怎么能在VB中完成这个呢?

Jar*_*Par 11

VB实际上有2个铸造概念.

  1. CLR风格的铸造
  2. 词汇铸造

CLR样式转换是C#用户更熟悉的内容.这使用CLR类型系统和转换来执行强制转换.VB的DirectCast和TryCast分别等同于C#cast和as运算符.

除了CLR类型系统之外,VB中的词法转换还需要额外的工作.它们实际上代表了潜在演员阵容的超集.通过在转换操作符上查找C前缀,可以很容易地发现词法转换:CType,CInt,CString等......如果编译器没有直接知道这些转换,它们将经历VB运行时.运行时将在类型系统之上进行解释,以允许类似以下的强制转换工作

Dim v1 = CType("1", Integer)
Dim v2 = CBool("1")
Run Code Online (Sandbox Code Playgroud)

  • @Adam,文档不正确.CType可以是词法转换,并且涉及VB运行时.尝试以下"Dim b as Integer = CType("42",Integer)".这两个都运行并涉及VB运行时 (2认同)