VSTO开发入门教程
上QQ阅读APP看书,第一时间看更新

2.4 不同类型的强制转换

编程过程中,有时候需要把一个类型的数值赋值给另一个类型的变量,如果源类型和目标类型是同种类型的,则直接赋值即可,这称作隐式转换。如果源类型和目标类型是不同类型的,则需要进行显式转换,否则会提示出错。

下面的4行代码可以正常运行,因为int类型的数据可以直接赋值给long类型;float类型的数据也可以直接赋值给double类型。

    1             int I = 32;
    2             long L = I;
    3             float FLT = 3.14F;
    4             double D = FLT;

■2.4.1 ToString

要把一个数据显示在MessageBox对话框中,或者显示在窗体的文本框中,都需要事先把变量或计算结果转换为string类型才行。以下代码,把整型变量I显示在窗体上的富文本框中。

    1             int I = 32;
    2             this.richTextBox1.Text =I.ToString();

■2.4.2 Parse

与ToString功能相反,Parse可以把字符串转换为其他数据类型。

    1             string temp ="1";
    2             int i = int.Parse(temp);
    3             float f = float.Parse(temp);
    4             char c = char.Parse(temp);
    5
    6             string s = "false";
    7             bool b = bool.Parse(s);
    8
    9             string d = "2016-8-8";
    10            DateTime dt = DateTime.Parse(d);

上述代码分别把字符串类型的数据转换为整型、浮点型、字符型、布尔型以及日期时间型。

■2.4.3 Convert

C#还可以使用System.Convert来转换数据类型。例如下面这句代码,把字符串转换为double类型。

double p = System.Convert.ToDouble(“3.14”);

System.Convert常用数据类型转换函数如表2.6所示。

表2.6 System.Convert常用数据类型转换函数

除了上述的转换方法外,还可以在原数据前面放一个括号,括号内是目标数据类型的名称。如下代码:

    1             int m = 3;
    2             double d =(double)m;

上述代码把整型数据m赋值给双精度变量d。

以下代码演示了最常用的数据类型的转换,读者自行调试体会。

    1         public void不同类型的强制转换()
    2         {
    3             int i = 30;
    4             string s = i.ToString(); //整型转字符串
    5             s = "30.65";
    6             float f = float.Parse(s); //字符串转浮点型
    7             double d = (double)f; //浮点型转双精度型
    8             int j = (int)d; //双精度型转整型
    9             result = i + s + f + d + j + "";
    10        }

具有同样功能的VBA代码如下:

    1  Public Sub不同类型的强制转换()
    2     Dim i As Integer, s As String, f As Single, d As Double, j As Integer
    3     i = 30
    4     s = CStr(i) '整型转字符串
    5     s = "30.65"
    6     f = CSng(s) '字符串转浮点型
    7     d = CDbl(f)  '浮点型转双精度型
    8     j = CInt(d)  '双精度型转整型
    9     result = i & s & f & d & j & ""
    10 End Sub