天轰穿C#教程之数据类型安全与转换【原创】

  从工具箱中拖四个Label控件到接口上,并分别修改Text属性为"姓名:、年龄:、结果:和消息",注意最后一个Label(就是Text属性为"消息"这个Label控件的NAME属性);

  

  小天:这么多数据类型,它们之间一定会有混合使用的时候。比如我们让用户输入用户名和年龄,然后显示出结果。

  

  老田:你说的这个最好使用WinForm来做。因为这只是第二次做,我们把步骤说下:

  

  1.创建一个名为"类型转换和装拆箱"的Windows桌面应用程序项目;

  

  2.从工具箱中拖四个Label控件到接口上,并分别修改Text属性为"姓名:、年龄:、结果:和消息",注意最后一个Label(就是Text属性为"消息"这个Label控件的NAME属性);

  

  3.拖两个TextBox控件到接口上,并分别将这两个控件的NAME属性修改为tb_name,tb_age;

  

  4.拖一个Button控件,将Text属性修改为提交;

  

  5.最终效果如图2-17

  

  图2-17

  

  6.上面的步骤做好之后,双击"提交按钮",为此按钮产生Click事件;

  

  7.代码如下:

  

  using System;

  

  using System.Collections.Generic;

  

  using System.ComponentModel;

  

  using System.Data;

  

  using System.Drawing;

  

  using System.Linq;

  

  using System.Text;

  

  using System.Windows.Forms;

  

  namespace类型转换和装拆箱

  

  {

  

  publicpartialclassForm1 : Form

  

  {

  

  public Form1()

  

  {

  

  InitializeComponent();

  

  }

  

  ///<summary>

  

  ///双击提交按钮产生事件

  

  ///</summary>

  

  ///<param name="sender">触发事件的对象,这类事件中当然就是当前对象</param>

  

  ///<param name="e">事件所附带的消息</param>

  

  privatevoid button1_Click(object sender, EventArgs e)

  

  {

  

  //下面几行代码是我们写的,其它的除注释外都是自动生成的,注意下面两次类型转换

  

  //因为tb_name的Text属性也是string类型,所以不用类型转换即可直接赋值

  

  string name = tb_name.Text;

  

  //使用Convert类的ToInt32方法将tb_age中接收到的string类型的值转换为int类型

  

  int age = Convert.ToInt32(tb_age.Text);

  

  //msg等于 name 加上 int类型的age,因为类型不同,所以将age转换为string类型

  

  string msg = name + age.ToString();

  

  //修改用来显示消息的Label4的Text属性

  

  label4.Text = msg;

  

  }

  

  }

  

  }

  

  8.运行程序(忘记了就回去看第一章);

  

  9.最终运行结果如图2-18

  

  图2-18

  

  小天:怪哉,我跟你演示的完全一样,为什么我的就是错的呢?你看如图1-19

  

  图2-19

  

  老田:它能不错嘛?你输入的30可以转换为整形,对吧?可"30岁",你说这个C#怎么帮你转换呢?因为无法转换,所以就出错了。这个是数据类型转换中常出现的事。

  

  小天:哪我咋知道什么情况可以转换,什么情况不可以转换啊?

  

  老田:数据类型的转换当然是有规律的了。从转换形式上来看,可将数据类型分为两种,不需要有语法申明的隐式转换和需要明确借助其它类或者方法来实现的显示转换。

  

  从转换类型上来看,可分为扩大转换和缩小转换,所谓扩大,就是范围、位数小的类型转换为大的,比如byte类型转换为int类型。缩小类型反之。

  

  本文为天轰穿原著,转载请注明出处及作者!

原文地址:https://www.cnblogs.com/thcjp/p/2744234.html