您的当前位置:首页C# 可空类型分析

C# 可空类型分析

2022-06-15 来源:比拉宠物

例如,Nullable<Int32>,读作“可空的 Int32”,可以被赋值为 -2147483648 到 2147483647 之间的任意值,也可以被赋值为 null 值。Nullable<bool> 可以被赋值为 true 或 false,或 null。在处理数据库和其他包含可能未赋值的元素的数据类型时,将 null 赋值给数值类型或布尔型的功能特别有用。例如,数据库中的布尔型字段可以存储值 true 或 false,或者,该字段也可以未定义。 可空类型具有以下特性: ·可空类型表示可被赋值为 null 值的值类型变量。无法创建基于引用类型的可空类型。(引用类型已支持 null 值。)。 ·语法 T? 是 System.Nullable<T> 的简写,此处的 T 为值类型。这两种形式可以互换。 ·为可空类型赋值与为一般值类型赋值的方法相同,如 int? x = 10; 或 double? d = 4.108;。 ·如果基础类型的值为 null,请使用 System.Nullable.GetValueOrDefault 属性返回该基础类型所赋的值或默认值,例如 int j = x.GetValueOrDefault(); ·请使用 HasValue 和 Value 只读属性测试是否为空和检索值,例如 if(x.HasValue) j = x.Value; 如果此变量包含值,则 HasValue 属性返回 True;或者,如果此变量的值为空,则返回 False。 如果已赋值,则 Value 属性返回该值,否则将引发 System.InvalidOperationException。 可空类型变量的默认值将 HasValue 设置为 false。未定义 Value。 ·使用 ?? 运算符分配默认值,当前值为空的可空类型被赋值给非空类型时将应用该默认值,如 int? x = null; int y = x ?? -1;。 ·不允许使用嵌套的可空类型。将不编译下面一行:Nullable<Nullable<int>> n; 程序代码 程序代码 class NullableExample { static void Main() { int? num = null; if (num.HasValue == true) { System.Console.WriteLine("num = " + num.Value); } else { System.Console.WriteLine("num = Null"); } //y is set to zero int y = num.GetValueOrDefault(); // num.Value throws an InvalidOperationException if num.HasValue is false try { y = num.Value; } catch (System.InvalidOperationException e) { System.Console.WriteLine(e.Message); } } } 以上将显示输出: num = Null Nullable object must have a value.

小编还为您整理了以下内容,可能对您也有帮助:

C#如何创建可空类型变量?

1、可空类型表示可被赋值为 null 值的值类型变量。无法创建基于引用类型的可空类型。(引用类型已支持 null 值。)。

2、为可空类型赋值与为一般值类型赋值的方法相同:

(1)如 int x = 10或 double d = 4.108;。

(2)如果基础类型的值为 null,请使用 System.Nullable.GetValueOrDefault 属性返回该基础类型所赋的值或默认值,例如 int j = x.GetValueOrDefault();

(3)请使用 HasValue 和 Value 只读属性测试是否为空和检索值,例如 if(x.HasValue) j = x.Value;如果此变量包含值,则 HasValue 属性返回 True;或者,如果此变量的值为空,则返回 False。

(4)如果已赋值,则 Value 属性返回该值,否则将引发 System.InvalidOperationException。

可空类型变量的默认值将 HasValue 设置为 false。未定义 Value。

(5)不允许使用嵌套的可空类型。将不编译下面一行:Nullable<Nullable<int>> n

3、INT(数据类型)

(1)在C语系编程语言(C、C++、C#、Java等)中,是用于定义整数类型变量的标示符。

(2)定义方法:

可空类型修饰符(?

可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空。例如string str=null; 是正确的,int i=null; 编译器就会报错。

为了使值类型也可为空,就可以使用可空类型,即用可空类型修饰符"?"来表示,表现形式为"T?"

例如:int? 表示可空的整形,DateTime? 表示可为空的时间。

T? 其实是System.Nullable(泛型结构)的缩写形式,也就意味着当用到T?时编译器编译 时会把T?编译成System.Nullable的形式。

扩展资料:

C#使用注意事项:

类成员的访问权限:

1、Public:允许外界访问。

2、Private 不允许外界访问,也不允许派生类访问。

3、Protected:不允许外界访问,但允许派生类访问。

4、Internal:允许同一个命名空间中的类访问。

5、在while括号后面不要加分号,因为加分号后,就表示while语句中的循环体代表空语句。不过有时可以将while语句的循环体中的语句放在while后面的括号中去,这时就可在while括号后面加上一个分号。

参考资料来源:百度百科-c#

为什么C#的datetime类型是可空的?

你好,因为C#里的时间类型是 System.DateTime和 System.DateTime? 

System.DateTime?这个类型本身是可空类型,可以直接用 if(datetime == null ) 来判断的。

而不带问号的System.DateTime类型,是不能为空的,未实例化调用时默认值是0001-01-01 ,因为他总是不为空的,所以无法判断。

C#关键字部分描述:

abstract:可以和类、方法、属性、索引器及事件一起使用,标识一个可以扩展但不能被实体化的、必须被实现的类或方法。

as:一个转换操作符,如果转换失败,就返回null。

base:用于访问被派生类或构造中的同名成员隐藏的基类成员。

catch:定义一个代码块,在特定类型异常抛出时,执行块内代码。

checked:既是操作符又是语句,确保编译器运行时,检查整数类型操作或转换时出现的溢出。

const:标识一个可在编译时计算出来的变量值,即一经指派不可修改的值。

delegate:指定一个声明为一种委托类型。委托把方法封装为可调用实体,能在委托实体中调用。

enum:表示一个已命名常量群集的值类型。

在C#中怎么判断一个对象是否为空

C#判断可空(null):

如果是引用类型,可以使用 == 运算符,或者 .equals()函数。

如果是值类型,建议只使用 == 运算符。(==只是比较两个对象是否是同一块内存,而Equuals()函数性能会差,因为要对值的所有字段做比较,全部相同才返回true)

而且要注意一些基类型是不可空的。

比如int ,具有默认值为0,不可为null,如果强行判断,编译器会抛出“无效代码”警告。

而int? 则是可空的整数类型,可以为null,也可以用==null来判断。

比拉宠物还为您提供以下相关内容希望对您有帮助:

为什么C#的datetime类型是可空的?

你好,因为C#里的时间类型是 System.DateTime和 System.DateTime?System.DateTime?这个类型本身是可空类型,可以直接用 if(datetime == null ) 来判断的。而不带问号的System.DateTime类型,是不能为空的,未实例化调用时默认值是0001-01-01 ,因为他总是不为空的,所以无法判断。C#关键字部分描述:...

C#中一个变量后加一个?是什么意思

这一类型在C#中叫做 “可空类型”;int?是一种类型,普通的int不能为null,而用int?,其值可以为null int?或者Nullable &lt;int&gt;表示基础类型为值类型的对象,值类型与引用类型一样也可以分配 nullNothingnullptrnull 引用 对于一个类型,如果既可以给它分配一个值,也可以给它分配 nullNothingnullptrnull...

可空类型修饰符(?)

可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空。例如string str=null; 是正确的,int i=null; 编译器就会报错。为了使值类型也可为空,就可以使用可空类型,即用可空类型修饰符"?"来表示,表现形式为"T?"例如:int? 表示可空的整形,DateTime? ...

C#如何创建可空类型变量?

1、可空类型表示可被赋值为 null 值的值类型变量。无法创建基于引用类型的可空类型。(引用类型已支持 null 值。)。2、为可空类型赋值与为一般值类型赋值的方法相同:(1)如 int x = 10或 double d = 4.108;。(2)如果基础类型的值为 null,请使用 System.Nullable.GetValueOrDefault 属性返回...

c#种 int?a= null 这个?代表什么意思

C#可空类型,比如: int? a = null;就是本来这个需要有值,但是int? 这样写就认为 a 可以默认为空

C# 如何声明一个字段为可空类型

在C#1.x的版本中,一个值类型变量是不可以被赋予null值的,否则会产生异常。在C#2.0中,微软提供了Nullable类型,允许用它定义包含null值(即空值)的数据类型,这对处理数据库中包含可选字段以及很多方面都有很大帮助。例 DateTime now = null; 是会报错的,因为DateTime类型是一个值类型, 不能为空...

C#代码中的问号是什么意思

string str=null;//是正确的。 int i=null;//编译器将报错。为了使值类型也可为空,可空类型出现了,可空类型使用可空类型修饰符?来表示,表现形式为T?。例:int?表示是可空的整形,DateTime?表示为可空的时间。int? i=null;//表示可空T?其实是System.Nullable&lt;T&gt;(泛型结构)的缩写形式,...

请问在c#中,如在内存中定义一个空类型的数据, 不是consolw redkey那种...

//示例:整数的可空类型 int? i = null; Console.WriteLine(i); Console.ReadLine();

为什么C#的可空类型,不允许应用于引用类型

因为目前所有版本的C#中,引用类型本身就是Nullable的,不过在即将出现的新版本C#中,很有可能引用类型本身不再是Nullable,而必须要声明成MyObject?才行,即与值类型的表达方式一致。这将是一个重大变化。

C#变量定义中含问号代表什么

C#变量定义中含问号代表该变量允许为空(null)。可以为 null 的类型可以表示基础类型的所有值,另外还可以表示 null 值。 可以为 null 的类型可通过下面两种方式中的一种声明:System.Nullable&lt;T&gt; variable- 或 - T? variableT 是可以为 null 的类型的基础类型。 T 可以是包括 struct 在内的任何值...

Top