C# 声明变量加?问号,DateTime D与DateTime? D区别
这是新的语法,表示可空值类型。
如Int32、结构体等这样的类型是不可能为空的,常见的如int,DateTime都是不可能为空的。所以在需要判断是否有值的场合,可以用加问号的可空值类型,如int?,DateTime?
这时,变量可以为空(null),并且可以通过它的HasValue属性来判断是否有值,并通过Value属性获得真正的值。
它可以通过对包装类型直接赋值的方式隐式创建,如:
int? a=32;
可空类型?与可空类型默认值
using System;
using System.Collections.Generic;
using System.Text;
namespace
{
class Program
{
static void Main(string[] args)
{
int? variablea = null;
Console.WriteLine(variablea.HasValue);
//下面此条语句错误,可为空的对象必须有一个值
// Console.WriteLine(variablea.Value);
int? a = 1;
Console.WriteLine(a.HasValue);
int variableb = variablea ?? 5;
Console.WriteLine(variableb);
//下面此条语句错误,可为空的对象必须有一个值
//Console.WriteLine(variablea.Value);
Console.WriteLine(variablea.HasValue);
variablea = 6;
Console.WriteLine(variablea);
Console.WriteLine(variablea.Value);
Console.WriteLine(variablea.HasValue);
//以下错误,无法将类型“int?”隐式转换为“int”。存在一个显式转换(是否缺少强制转换?)
E:\VisualC#2005技术内幕\1-2单元\P29 可空类型\可空类型\Program.cs 34 20 可空类型
//int b = variablea;
//必须用??
int b = variablea ?? 6;
Console.WriteLine(b);
Console.ReadLine();
}
}
}
c#中:int ? counts=0;
?表示counts是可空类型。
可空类型是System.Nullable结构体的实列。一个可空类型代表了相应值类型的正确范围附加null值。例如 Nullable<Int32>的取值范围应该是-2147483648到2147483647外加null。 Null<bool>的取值为true,false和null。这种方法一般在处理数据库的时候用到,因为数据库里面可能含有没有赋值的值类型。
int? num = null;
可空类型具有如下的属性:
·可空类型只能应用于值类型,引用类型因为已经支持了null而不能被使用。
·T?是System.Nullable<T>的缩写,这里T是一个值类型。这两种格式是可以互换的。
·可以像使用普通类型一样使用可空类型。例如int? x = 10;或者double? d = 40108;
·使用System.Nullable.GetValueOrDefault还获得值,或者当它为空的时候获得默认值。
·使用HaseValue和Value只读属性来测试它是不是空并且返回相应的非空值。
·如果含有值那么HaseValue返回真,否则返回假。
·如果含有值那么Value返回值,否则抛出System.InvalidOperationException异常。
·HaseValue默认值为假,Value默认为未定义。
·当向值类型获得可空类型的值得时候,使用??运算符来赋予一个可空类型一个默认值。例如:int? x = null; int y = x ?? -1;
·不可以嵌套可空类型。Nullable<Nullabel<int>> n;将会抛出异常。
String与StringBuilder的区别
MySqlBulkLoader 导入csv Incorrect datetime value: '' for column |C/S开发框架
EF报错:从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值|C/S开发框架
C# DateTimeOffset 使用
Winform C/S结构与Web B/S结构开发MES/ERP系统优缺点及区别|C/S开发框架
CSFramework标准版与WinFramework轻量框架版本区别|软件手册
CSFramework标准版与WinFramework轻量框架版本区别|C/S开发框架
WinFramework轻量级框架与旗舰版V5.1功能差异与区别|C/S开发框架
C# 时间戳(Timestamp)与标准时间(DateTime)互转-C/S开发框架
C#和C++的区别,c和c#和c++区别-C/S开发框架
Winform轻量级框架和重量级框架有什么区别
WinFramework轻量框架V2.1与旗舰版V5.1功能区别
.NET Framework V4.0版本经典模式和集成模式的区别 - 阿里云虚拟主机.NET版本设置
开发框架使用.NET Reactor(加壳+代码混淆)与加密狗加密有什么区别
C#.NET 查询MYSQL报错:值类型与列类型不匹配不能在列中存储 。所需类型是MySqlDateTime
C#.NET给DataTable日期类型的列赋值报错:所需类型是 MySqlDateTime,值类型与列类型不匹配
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服
