第五节 19可空数据类型

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;

/*  可空数据类型
 *  C#中值类型(int, Guid, bool等)是不可以为空的,int i=null是错误的,因此int, bool等这些类型不能表示数据库中的"Null"
 *  因此C#提供了"可空类型"这种语法,只要在类型后加?就构成了可空的数据库类型,比如int?, bool?,这样int? i = null就可以了,解决数据库中int可以为null,而C#中int不能为null的问题
 *  
 * 判断可空类型是否为空,i==null或者i.HasValue; 得到可空变量的值,int i1 = (int)i.Value或者int i i1 = i.value;
 * 
 * 类型转换: 不可空类型赋值给可空类型无需要显示转换(一定成功),可空类型赋值给不可空类型则需要显示转换(不一定成功)
 * 
 * 
 * 
 * 
 * 
 * 
 */
namespace _19可空数据类型
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string s1 = null;
            //int i1 = null;
            int? i2 = 0;
            int? i3 = 3; //int?->可空的int,解决数据库和C#对于int是否可以为null的不同所设置的

            if (i3 == null)
            {
                MessageBox.Show("i3为空");
            }
            else {
                i3++;
                int i4 = (int)i3; //这里对可为空的i3进行数据类型转换
                MessageBox.Show("i3不为空,i3++="+i3);
            }

            //第二种判断是否为空的值
            if (i3.HasValue)
            {
                int i4 = i3.Value;
                MessageBox.Show("i3不为空,值为" + i4);
            }
            else {
                MessageBox.Show("i3为空");
            }
            int i6 = 10; //定义一个int数据类型
            int? i5 = i6;  //可以给赋值给一个可空的int数据类型

            //但可空的int型,不能赋值给一个可空的int类,这只能做数据类型转换,
           
        }

        private void button2_Click(object sender, EventArgs e)
        {
            //这里直接用一个强类型的DataSet
            /*T_UserRow u = new T_UserRow();
            u.Id = 1;
            u.name = "xxdxxd";
            u.password = "xxdxxd";
            u.errortimes = 1;*/
        }
    }
}

  

posted @ 2012-03-04 23:39  简单--生活  阅读(387)  评论(0编辑  收藏  举报
简单--生活(CSDN)