65.9K
CodeProject 正在变化。 阅读更多。
Home

速查表 - VB.NET 和 C# 中的类型转换

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.56/5 (70投票s)

2003年9月23日

公共领域

2分钟阅读

viewsIcon

1004284

描述了 VB.NET 和 C# 中几种类型转换和类型相关的操作。

引言

本文描述了 VB.NET 和 C# 中几种类型转换和类型相关的操作。

VB.NET 中的类型转换

  1. 默认情况下,在 VB 中,当你将对象分配给变量时,会自动进行类型转换。然后对象会自动转换为变量的类型。

    此行为可以通过在代码文件顶部添加一个选项行来影响

    Option Strict On
    Option Strict Off
    

    启用后,类型转换是严格的,并且不是自动进行的。

  2. 显式类型转换可以使用转换运算符 CType()DirectCast()

    textbox = CType(obj, TextBox)
    textbox = DirectCast(obj, TextBox)
    

    这两个关键字的区别在于,只要表达式和类型之间定义了有效的转换,CType 就会成功,而 DirectCast 要求对象变量的运行时类型与指定的类型相同。但是,如果指定的类型和表达式的运行时类型相同,则 DirectCast 的运行时性能优于 CType。如果参数类型不匹配,DirectCast 会抛出 InvalidCastException 错误。

  3. 可以使用 TypeOf...Is 运算符来测试一个对象是否属于特定类型

    If TypeOf obj Is TextBox Then...
    
  4. 可以使用 GetType 运算符获取给定类型的 System.Type 对象

    Dim t As System.Type
    t = GetType(String)
    MessageBox.Show(t.FullName)
    
  5. 可以使用 GetType 方法获取给定对象的 System.Type 对象

    Dim t as System.Type
    t = obj.GetType()
    MessageBox.Show(t.FullName)
    

C# 中的类型转换

  1. C# 是一种强类型语言。只要类型不匹配,就需要进行类型转换。

    C# 中的常规类型转换遵循 C(++) 和 Java 语法

    string s = (string)obj;
    

    类型转换运算符适用于它右侧的整个链,因此在以下示例中,不是 a,而是 a.b 被转换为 Form

    Form f = (Form)a.b;
    

    要转换链的一部分,请使用方括号。在以下示例中,obj 被转换为 Form

    string s = ((Form)obj).Text;
  2. C# 知道一个附加的类型转换运算符:as

    as 运算符就像一个类型转换,只是它在转换失败时产生 null 而不是引发异常。在以下情况下,btn 获得值 null

    Object obj = new TextBox();
    Button btn = obj as Button;
    
  3. 可以使用 is 运算符来测试一个对象是否属于特定类型

    if (obj is TextBox) {...}
    
  4. 可以使用 typeof 运算符获取给定类型的 System.Type 对象

    System.Type t;
    t = typeof(String);
    MessageBox.Show(t.FullName);
    
  5. 可以使用 GetType 方法获取给定对象的 System.Type 对象

    System.Type t;
    t = obj.GetType();
    MessageBox.Show(t.FullName);
    
© . All rights reserved.