定义Nullable类型

定义一个nullable类型非常类似于定义一个非nullable类型。不同之处在于使用类型修饰符“?”。比如定义一个整型如下:

int myInt = 1;

要使一个整型变量可以存储一个null值,可以如下声明:

int? myNullableInt = 1;

这两个变量看起来似乎是一样的。但事实并非如此。实际上,Nullable类型是一个结构体,它有两个公开可读字段:HasValue和Value。HasValue是一个布尔值,当有值存储时它为真,当变量值为null时HasValue为假。当HavValue为真是时,可以取得变量的值;为假时,当尝试取得变量的值时会抛出一个异常。

现在null是C#的一个关键字,它可以被赋给一个Nullable型变量。下面是对Nullable型变量赋值的两种有效方式。

double? myDouble = 3.14159;double? myOtherDouble = null;

可以看到,myDouble被赋给一个值,它也可以被赋以null。在第二个语句中,myOtherDouble被初始化为null——在一个非Nullable型变量中这样做会产生异常。

时间: 2024-12-28 15:30:39

定义Nullable类型的相关文章

.net 2.0中新增的nullable类型

.net 2.0中,有新增的nullable类型,主要可以用为基本的值类型赋予null的值,比如 int? k = 3;//一个可为空的值类型(简称空类型)int m = null;//错误int? j = null;//成功从上面的例子我们可以看到在值类型后可以定义一个可为空的值类型,在C#中,是在基本类型后加一个?号,而在VB.NET中,可以这样 Dim dtmVarName As Nullable(Of DateTime) Dim intVarName As Nullable(Of Int

Sqlserver浅谈用户定义表类型

1.1 简介 SQL Server 中,用户定义表类型是指用户所定义的表示表结构定义的类型.您可以使用用户定义表类型为存储过程或函数声明表值参数,或者声明您要在批处理中或在存储过程或函数的主体中使用的表变量. 若要创建用户定义表类型,请使用CREATE TYPE语句.为了确保用户定义表类型的数据满足特定要求,您可以对用户定义表类型创建唯一约束和主键. 1.2 使用例题 在创建用户定义表类型前先建立一个数据库表 USE [Contacting] GO SET ANSI_NULLS ON GO SE

android传值非自己定义的类型的值

问题描述 android传值非自己定义的类型的值 android怎么传递非自己定义的类型的值,序列化不行啊,别人的类又不可以修改.刚刚学习android,求大神帮忙啊 解决方案 你不能创建该类型的类对象吗?别人的类你应该也可以创建一个对象穿给函数啊 解决方案二: 传值?你指的是intent跳转传值吗? 解决方案三: 创建一个对象,对象实现这个接口 Parcelable,android里用intent的putParcelable传对象 解决方案四: 继承别人的类然后在实现序列化接口... 解决方案

JNI中已经有C++类型,不知如何定义Java类型

问题描述 JNI中已经有C++类型,不知如何定义Java类型 现在我有个C++写好的dll,打算用JNI来调用,看了网上的资料.首先先写Java代码,然后用javah命令,最后在jni中调用调用已经存在的dll函数.现在遇到java类型转换的问题. 现在有个函数 jcu_user_handle_t* jcu_net_login( char *ip, unsigned short port, char *user, char *pass, int timeout, jcu_event_cb_t *

class-vector利用自己定义的类型出错,其解答

问题描述 vector利用自己定义的类型出错,其解答 #include #include using namespace std; class Node { public: Node(); void SetX(int); int GetX(); private: int x; }; Node::Node() { x = 0; } int Node::GetX() { return x; } void Node::SetX(int i) { x = i; } class test { public

《Hack与HHVM权威指南》——1.7.1 提炼nullable类型到non-nullable类型

本节书摘来自华章出版社<Hack与HHVM权威指南>一书中的第1章,第1节,作者 Owen Yamauchi,更多章节内容可以访问"华章计算机"公众号查看. 1.7.1 提炼nullable类型到non-nullable类型 null检查语句在从空值(nullable)的类型到非空值(non-nullable)类型的转变中经常用到.下面是个通过了类型检查器检查的示例. function takes_string(string $str) { // ... } functio

c++-定义模板类型关于typename和class的疑问

问题描述 定义模板类型关于typename和class的疑问 在百度上查了一下typename和class在表示有子类的类类型时候应该用typename而不用class 那么既然typename比class的使用范围广,那么为什么还要使用class呢?是不是还有什么其他区别? 解决方案 在声明一个template type parameter(模板类型参数)的时候,class和typename意味着完全相同的东西.在c++Template中你完全可以用typename代替class. 一些程序员

java如何定义long类型的变量

问题描述 java如何定义long类型的变量 如题 java如何定义long类型的变量?变量后面加L(大)或者l(小)是什么意思? 解决方案 long是Java的关键字,直接使用long即可,比如: long a = 100L; 而整数字面量后面加L或l表示这个整数是long类型,如果没有后缀,默认为int类型. 解决方案二: 直接像其他基本类型一样用就好 解决方案三: 直接和其他类型定义一样就可以了 解决方案四: 变量后面加L或者l与其他int类型区分 解决方案五: long a = 100L

《Splunk智能运维实战》——1.9 定义事件类型和标签

1.9 定义事件类型和标签 Splunk中的事件类型是将数据中共同类型的事件归类的一种方法,这样可以使它们更易于搜索和制作报表.使用事件类型有助于把类似的事件归为同一类.事件类型本质上将数个搜索条件变为字段/值对.标签有助于更高效地搜索事件数据组.我们可以为包括事件类型在内的任何字段/值组合分配标签. 比如,Windows登录事件可以被赋予事件类型windows_logon,UNIX登录事件可以被赋予事件类型unix_logon,VPN登录事件可以被赋予事件类型vpn_logon.以上三种事件类