当前位置: 代码迷 >> 综合 >> SQL Server(7)——空值问题(2)——C#中的null
  详细解决方案

SQL Server(7)——空值问题(2)——C#中的null

热度:25   发布时间:2023-10-02 00:31:51.0

在C#中,int、bool、DateTime 等值类型的数据不可以为 null 。

值类型的特点:值传递。

string、person 等属于引用类型,其值可以为 null 。

值类型和引用类型的区别是:传递数据时,值类型是值传递(拷贝传递),可以为 null ;引用类型是引用传递,不可以为 null 。

----------------------------------------------------

注意:以上是在C#中。在数据库中,int、bool、DateTime 等是可以为 null 的。

----------------------------------------------------

如果数据库里面存的是 NULL,那么在 C# 中用 row["TelPhone"] 取出来的数据的值是 DBNull.value , 这是ADO.Net 对于 C# 中 int 不可以为 null 、数据库中int可以为 null 的一个权衡。DBNull.Value 不等于 null 。

以下两行代码的效果是一样,但是推荐使用第二行,因为代码量比较少。

            if (row["TelPhone"]==DBNull.Value)//在ado.net中判断字段值是否为null的标准方法if (row.IsNull("TelPhone"))//更简单的判断数据库中字段值为null的方法

在值类型后加?就成为了可空类型。如:

int? i = null; //加了?了,所以这里的i是可控类型
i = 90;
i++;

再比如:

        public static int? GetAge(){if (DateTime.Now.Second % 2 == 0){return 20;}else{return null;}}

 

  相关解决方案