今天接触到两个新的类型,查了一下才发现它们已经出现好久了,特作一下标记

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>集合的更多相关文章

  1. JAVA异常处理、常用类、反射、集合

    异常 异常:在Java中是指被一个方法抛出的对象. 分类:检查异常.运行时异常.错误 运行时异常(uncheckd):RuntimeException和其子类 检查异常(checkd/搜检异常):指E ...

  2. Java:类集框架中集合的学习

    Java:类集框架中集合的学习 集合 Java:Set的学习 Set是类集框架中的集合类.集合是不按特定的方式排序,并且没有重复对象的一种类. Q:Set如何操作?Set中的不按特定方式排序是怎么排序 ...

  3. DATETIME类型和BIGINT 类型互相转换

    项目中使用BIGINT来存放时间,以下代码用来转换时间类型和BIGINT类型 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ========= ...

  4. AngularJs:String类型和JSON相互转换

    最近一周做了一个页面,制作的过程中遇到各种问题,从中可以看出本人的js基础还不够扎实,angularjs也只是刚入门的水平,现在将制作过程中遇到的问题一一汇总,方便以后查阅. 一.String类型和J ...

  5. Timestame类型和String 类型的转化

    Timestame类型和String 类型的转化 String转化为Timestamp: SimpleDateFormat df = new SimpleDateFormat("yyyy-M ...

  6. Python3.x中bytes类型和str类型深入分析

    Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分.文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示.Python 3不会以任意隐式的方式混用str和b ...

  7. Date类型和Long类型的相互转换

    Date类型和Long类型的相互转换: import java.text.SimpleDateFormat; import java.util.Date; public class T { publi ...

  8. Java数据类型和MySql数据类型对应一览

    类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述             VARCHAR L+N VARCHAR java.lang.String 12   CHAR N ...

  9. java中XMLGregorianCalendar类型和Date类型之间的相互转换

    import java.text.SimpleDateFormat;import java.util.Date;import java.util.GregorianCalendar;import ja ...

随机推荐

  1. Sharepoint 2010 用VS定制Master,并且每个Web应用同一个Master

    转:http://***/html/blogs/20130407/1381.htm 最近做了一个项目管理系统,要求用Sharepoint,有个特别的功能就是通过创建出来的子站点要求应用同一个Maste ...

  2. 从零开始学习jQuery (七) jQuery动画-让页面动起来!

    一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案,  即使你会使用jQuery也能在阅读中发现些许秘籍. 开发人员一直痛疼做动画. 但是有了jQuery你 ...

  3. windows API中的各种字符串的本质

    windows 库中的各种string, char, wchar, TCHAR, lpstr, lpwstr, lpcwstr  ,   cstring  ,    BSTR,   _bstr_t 等 ...

  4. 转载--配置WAMP开发环境

    转自:http://www.cnblogs.com/cardon/archive/2009/12/13/1622935.html 本例安装文件在这里下载       apache2.2.4 MySQL ...

  5. aggregate 和 treeAggregate 的对比

    1.定义 [aggregate] /** * Aggregate the elements of each partition, and then the results for all the pa ...

  6. 2015年10月22日CSS学习笔记

    XHTML1.0对HTML4.0的改进 借鉴了XML的写法,语法更加严格. 把页面的内容和样式分离了,废弃了html4中的表示样式的标签和属性.推荐使用css来描述页面的样式. CSS样式的优先级 ! ...

  7. POJ 1458 Common Subsequence 最长公共子序列 LCS

    LCS #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> ...

  8. Git 钩子

    1. 概念概述 1.1. 安装钩子 1.2. 脚本语言 1.3. 钩子的作用域 2. 本地钩子 2.1. 预提交钩子 Pre-Commit 2.2. 准备提交信息钩子 Prepare Commit M ...

  9. 恢复oracle中误删除drop掉的表

    查看回收站中表 select object_name,original_name,partition_name,type,ts_name,createtime,droptime from recycl ...

  10. new Date() iso不支持兼容性问题

    在IOS5以上版本(不包含IOS5)中的Safari浏览器能正确解释出Javascript中的 new Date('2013-10-21') 的日期对象. 但是在IOS5版本里面的Safari解释ne ...