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也没有提示代码有问题,但是这个代码得到的结果是错的 是null
结论:空对象加任何数字都是空对象
正确的做法:
var result = calc.Number.Hasvalue? calc.Number.value:0+ calc.Number1+calc.Number2;
结果是220

时间: 2024-07-28 19:09:57

Nullable类型的问题处理的相关文章

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. Null

在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

【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