在平时开发中,经常遇上强制转换,在这过程中经常遇上null对象转换为值类型,如果不判断的情况下在编译的时候不会出错,但程序一运行就抛出错误。好在C#为我们提供了is ,它判断一个对象如果成立就转换,如果不成立就返回null.
下面是具体的一个例子运用。
public partial class Org
{
public string OrgID { get; set; }
public string OrgName { get; set; }
public int? Total{ get; set; }
}
class Program
{
static void Main(string[] args)
{
DataTable tblDatas = new DataTable("Datas");
DataColumn dc = null;
dc = tblDatas.Columns.Add("ID", Type.GetType("System.Int32"));
dc = tblDatas.Columns.Add("OrgID", Type.GetType("System.String"));
dc = tblDatas.Columns.Add("OrgName", Type.GetType("System.String"));
dc = tblDatas.Columns.Add("Total", Type.GetType("System.Int"));
DataRow newRow;
newRow = tblDatas.NewRow();
newRow["OrgID"] = "1";
newRow["OrgName"] = "Test";
newRow["Total"] = null;
tblDatas.Rows.Add(newRow);
Org org = new Org();
org.Total= tblDatas.Rows[0]["Total"] as int?;
Console.WriteLine(org.Total);
}
}
在这程序中 “org.Total= tblDatas.Rows[0]["Total"] as int?; ”这里是强制转换,实体对象 public int? Total{ get; set; } 这里一定要加?号。