Nullable类型和HashSet<T>集合
今天接触到两个新的类型,查了一下才发现它们已经出现好久了,特作一下标记
Nullable结构
在System命名空间下,在 .NET Framework 2.0 版中是新增的;用它定义的值类型的对象与引用类型一样也可以分配空引用
这样看来有点和 int? a 有点相似,根据不同的应用场合,我们会经常使用可空类型来表示存在或不存在的内容,但是这个Nullable 结构有两个基础成员为HasValue 和Value 属性,如果 Nullable 对象的 HasValue 属性为 true,则可以使用 Value 属性访问该对象的值。如果 HasValue 属性为false,则表示尚未定义该对象的值,并且尝试访问 Value 属性时会引发 InvalidOperationException,在使用这个值的时候如果使用这两个属性就极大的减少了忘记判断值类型造成的异常问题(一个值类型变量是不可以被赋予null值的,否则会产生异常),这就又出来了一个装箱拆箱的问题
int? First = null;
int Second = 2; nFirst = Second; // 可以
nFirst = null; // 可以
Second = nFirst; // 如果直接复制就会抛出异常, if (nFirst.HasValue) Second 是一个非nullable型变量 侧不会。 HashSet集合
HashSet<T>集合 .NET Framework 3.5中出现在命名空间: System.Collections.Generic下,实现了 ICollection<T>, IEnumerable<T>等接口,从.Net Framework 4开始 又实现了ISet<T>接口
MSDN上说 HashSet<T> 类提供高性能的集运算(集合是一组不重复出现且无特定顺序的元素),由于他是无序的所以在操作数据的时候要比List<T>效率会高点,同事具有集合的功能
HashSet<T> 对象的容量将随该对象中元素的添加而自动增大。
案例如下:EF codefirst简单实现
public partial class Shop
{
public ClassInfo()
{
this.Products = new HashSet<Product>();
}
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int SID { get; set; }
[Required]
public string Sname { get; set; }
public string SCode { get; set; }
[Required]
public Nullable<int> MemberID{ get; set; }
[Required]
public Nullable<int> SLevel{ get; set; }
[Required]
public Nullable<int> State{ get; set; }
public string CloseReason{ get; set; }
public virtual ICollection<Product> Products { get; set; }
} public partial class Product
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int PID { get; set; }
[Required]
public string PName { get; set; }
[Required]
public Nullable<int> Count { get; set; }
[Required]
public Nullable<Decimal> Price { get; set; }
[Required]
public Nullable<int> State{ get; set; }
[Required]
public Nullable<int> Category{ get; set; }
[Required]
public Nullable<int> PWeight{ get; set; }
public string Summary{ get; set; }
public virtual Shop ShopEntity{ get; set; }
} public partial class PJYDBEntities : DbContext
{
public PJYDBEntities()
: base("name=PJYEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
} public DbSet<Product> Product{ get; set; }
public DbSet<Shop> Shop{ get; set; }
}
Nullable类型和HashSet<T>集合的更多相关文章
- JAVA异常处理、常用类、反射、集合
异常 异常:在Java中是指被一个方法抛出的对象. 分类:检查异常.运行时异常.错误 运行时异常(uncheckd):RuntimeException和其子类 检查异常(checkd/搜检异常):指E ...
- Java:类集框架中集合的学习
Java:类集框架中集合的学习 集合 Java:Set的学习 Set是类集框架中的集合类.集合是不按特定的方式排序,并且没有重复对象的一种类. Q:Set如何操作?Set中的不按特定方式排序是怎么排序 ...
- DATETIME类型和BIGINT 类型互相转换
项目中使用BIGINT来存放时间,以下代码用来转换时间类型和BIGINT类型 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ========= ...
- AngularJs:String类型和JSON相互转换
最近一周做了一个页面,制作的过程中遇到各种问题,从中可以看出本人的js基础还不够扎实,angularjs也只是刚入门的水平,现在将制作过程中遇到的问题一一汇总,方便以后查阅. 一.String类型和J ...
- Timestame类型和String 类型的转化
Timestame类型和String 类型的转化 String转化为Timestamp: SimpleDateFormat df = new SimpleDateFormat("yyyy-M ...
- Python3.x中bytes类型和str类型深入分析
Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分.文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示.Python 3不会以任意隐式的方式混用str和b ...
- Date类型和Long类型的相互转换
Date类型和Long类型的相互转换: import java.text.SimpleDateFormat; import java.util.Date; public class T { publi ...
- Java数据类型和MySql数据类型对应一览
类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述 VARCHAR L+N VARCHAR java.lang.String 12 CHAR N ...
- java中XMLGregorianCalendar类型和Date类型之间的相互转换
import java.text.SimpleDateFormat;import java.util.Date;import java.util.GregorianCalendar;import ja ...
随机推荐
- LoadRunner 录制IE 8卡死
LoadRunner11录制脚本,对IE的版本是有所限制的,它只是支持IE 8 以下版本,其中包括IE 8,高出IE 8版本Loadrunner是不支持的. 我遇到LoadRunner录制脚本时IE8 ...
- 关于Windows Azure的常见问题-一般问题FAQ
一般问题 什么是Windows Azure? Windows Azure 是一个灵活而开放的云平台,通过该平台,您可以在数据中心快速生成.部署和管理应用程序.Windows Azure 支持所有主流操 ...
- hadoop入门必备基础知识
1.对Linux 系统的要求 会基本的命令: (1)知道root用户 (2)ls命令会查看文件夹内容 (3)cd命令等2.Java 的要求 ...
- POJ3280 - Cheapest Palindrome(区间DP)
题目大意 给定一个字符串,要求你通过插入和删除操作把它变为回文串,对于每个字符的插入和删除都有一个花费,问你把字符串变为回文串最少需要多少花费 题解 看懂题立马YY了个方程,敲完就交了,然后就A了,爽 ...
- SRM144 - SRM 148(少144-DIV1-LV3,147-DIV2-LV3)
SRM 144 DIV 1 500pt tag:组合 题意:彩票中奖.给定n, m,从1-n中选择m个数组成数列a1, a2, a3...am.对于数列{am}分别满足以下条件的概率: (1)数列所有 ...
- 【ACM/ICPC2013】树形动态规划专题
前言:按照计划,昨天应该是完成树形DP7题和二分图.最大流基础专题,但是由于我智商实在拙计,一直在理解树形DP的思想,所以第二个专题只能顺延到今天了.但是昨天把树形DP弄了个5成懂我是很高兴的!下面我 ...
- Java String 对 null 对象的容错处理
前言 最近在读<Thinking in Java>,看到这样一段话: Primitives that are fields in a class are automatically ini ...
- CentOS搭建VSFTP
1.先看看有没有安装 rpm -qa | grep vsftpd 如果没有提示,说明没有安装.接下来,我们安装一个ftp. 2.yum安装vsftpd: yum -y install vsftpd 安 ...
- Ⅹ.spring的点点滴滴--IObjectPostProcessor(对象后处理器)
承接上文 IObjectPostProcessor(对象后处理器) 前提是实现接口的对象注册给当前容器 C#: 通过继承AbstractObjectFactory对象的AddObjectPostPro ...
- JBPM学习(六):详解流程图
概念: 流程图的组成: a. 活动 Activity / 节点 Node b. 流转 Transition / 连线(单向箭头) c. 事件 1.流转(Transition) a) 一般情况一个活动中 ...