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;*/}}
}