c# nullable类型有什么用

可空类型,语法:

Nullable<int> inullx = 10;
            int? inully = 10;

Nullable<int> inullx0 = null;
            int? inully0 = null;

作用:

如数据库中存在可为空的数据, 在C#中用一个值类型变量去接收该值会出错,因为C#中值类型不能被赋予null,如下编译出错:

float fx = null

而若用object类型x接收此空值null,则x将被GC。

Nullable是一个struct,是值类型,被赋予null后不会被GC。

总结:

Nullable类型必不可少,不可替代。

附:

?? 运算符

int x = inullx ?? 5

若 inullx为空则取5赋予x

object ot = ox ?? new object()

若ox为空,则构造一个新对象给ot

时间: 2025-01-14 03:21:31

c# nullable类型有什么用的相关文章

在C#中使用 Nullable 类型

在C#1.x的版本中,一个值类型变量是不可以被赋予null值的,否则会产生异常.在C#2.0中,微软提供了Nullable类型,允许用它定义包含null值(即空值)的数据类型,这对处理数据库中包含可选字段以及很多方面都有很大帮助. 定义Nullable类型 定义一个nullable类型非常类似于定义一个非nullable类型.不同之处在于使用类型修饰符“?”.比如定义一个整型如下: int myInt = 1; 要使一个整型变量可以存储一个null值,可以如下声明: int? myNullabl

Convert.ChangeType不能处理Nullable类型的解决办法(转)

https://www.cnblogs.com/patrickyu/p/3211115.html 在做一个ORMapping功能的时候发现,Convert.ChangeType不能处理nullable类型,比如int?. 解决办法也很简单,贴出完整的代码(大部分代码来自网络),注意下面代码没经过完整测试,不要直接用在项目里: public delegate void SetValue<T>(T value); public static class ORMapping<T> whe

c#解决Nullable类型的转换 (包含DataContract的序列化和反序列化以及 该例子应用在反射属性setvalue的时候有用)

using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Reflection;using System.Runtime.Serialization;using System.Text;using System.Threading.Tasks;using System.Xml.Linq; namespace ConsoleApplication11{ [DataCont

Nullable类型的问题处理

public class Calc { public long? Number { get; set; } public long Number1 { get; set; } public long Number2 { get; set; } } var calc = new Calc(); calc.Number1 = 100; calc.Number2 = 120; var result = calc.Number + calc.Number1+calc.Number2; Resharper

【C#】可空类型(Nullable)

C# 可空类型(Nullable) C# 提供了一个特殊的数据类型,nullable 类型(可空类型),可空类型可以表示其基础值类型正常范围内的值,再加上一个 null 值. 例如,Nullable< Int32 >,读作"可空的 Int32",可以被赋值为 -2,147,483,648 到 2,147,483,647 之间的任意值,也可以被赋值为 null 值.类似的,Nullable< bool > 变量可以被赋值为 true 或 false 或 null.

Nullable可空类型

一个Nullable类型就是基本类型加上一个"是否为null指示器"的合成类型.对于一个类型,如果既可以给他分配一个值,也可以给它分配null引用,我们就说这个类型是可空的. 可空类型会多了两个属性 1.HasValue 是否有值 2.Value 获取值 来看个DEMO,这个东西,真没什么好说的.就是容易忘记,如何判断. public class Program { static void Main(string[] args) { int? avalue = null; if (av

可空类型(Nullable)

可空类型可以表示其基础值类型正常范围内的值,再加上一个 null 值 语法: < data_type> ? <variable_name> = null;   using System; namespace CodeReview { class Program { /// <summary> /// C# 提供了一个特殊的数据类型,nullable 类型(可空类型),可空类型可以表示其基础值类型正常范围内的值,再加上一个 null 值 ///例如,Nullable<

C#用反射判断一个类型是否是Nullable同时获取它的根类型(转自网络)

在我们的应用程序中我们使用类描述我们的业务对象,为我们产生一些报表之类的,那就依赖大量不同的对象,我们创建一个帮助方法来转换我们的业务对象,或是一个List的业务对象到DataTables. 由于数据库表中字段可为null,对应.net 2.0以后我们可用Nullable类型来实现,那当我们业务对象类中字段有null时,并需要转换为DataTable时,这个场景产生,你可能用到以下方法: 下面的代码是一个list对象(不支持处理复杂类型)返回一个描述对象的DataTable /// <summa

53. C# -- 可空类型(Nullable)

C# 可空类型(Nullable) 理论: C# 提供了一个特殊的数据类型,nullable 类型(可空类型),可空类型可以表示其基础值类型正常范围内的值,再加上一个 null 值. 例如,Nullable< Int32 >,读作"可空的 Int32",可以被赋值为 -2,147,483,648 到 2,147,483,647 之间的任意值,也可以被赋值为 null 值. Nullable< bool > 变量可以被赋值为 true 或 false 或 null