.NET笔记(二)
null合并运算符
?? 运算符称作null 合并运算符。如果此运算符的左操作数不为null,则此运算符将返回左操作数;否则返回右操作数。
使用Average而产生的一个错误
因为数据中有DBNull,所以应该写成
decimal? avgUPri = dt.AsEnumerable().Average(q => q.Field<decimal?>("单价"));
ref、out
out参数比较简单,加了之后就不需要先申明变量了。
ref参数使用引用变量时,有些要注意的地方。如果只改变引用对象的成员,那么用不用ref都是一样的效果,但如果要将引用对象进行重新赋值,要得到新的引用的对象,就必须使用ref了,否则不能改变对象。
断言
请不要将函数调用放在 Debug.Assert 语句中。改用临时变量
List
ArrayList //存储对象,当存储值类型数据时需要装箱,消耗较大。一个ArrayList可以存储不同的数据类型
Array<T> //指定泛型,不需要装箱、拆箱
泛型
优点:算法重用、类型安全、相比object没有拆箱、装箱的性能损耗
泛型约束where:,可以约束接口、基类、类型、默认构造函数()
MyClass<T>where T : IComparable<T> //约束T必须实现IComparable接口、基类同理
where T : class //约束T类型必须为引用类型
where T : struct //约束T类型必须为值类型
where T:new() //约束T类型有一个公共无参构造器
协变、抗变
逆变:
泛型类型T可以从基类型更改为该类的派生类型,
用in关键字标记逆变形式的类型参数,
而且这个参数一般作输入参数。
协变:
泛型类型T可以从派生类型更改为它的基类型,
用out关键字来标记协变形式的类型参数,
而且这个参数一般作为返回值
同步异步
同步和异步关注的是消息通信机制
同步:调用者主动等待调用结果
异步:被调用者通知调用者结果
阻塞非阻塞
阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态
阻塞:调用结果返回之前,调用者挂起
非阻塞:在未获得调用结果之前,调用者不用被挂起
线程
做foreach循环时多考虑线程安全性
在foreach时不要试图对被遍历的集合进行remove和add等操作
任何集合,即使被标记为线程安全的,在foreach的时候,增加项和移除项的操作都会导致异常
linq
from [type] id in source
[join [type] id in source on expr equals expr [into subGroup]]
[from [type] id in source | let id = expr | where condition]
[orderby ordering,ordering,ordering...]
select expr | group expr by key
[into id query]
.NET笔记(二)的更多相关文章
- 《CMake实践》笔记二:INSTALL/CMAKE_INSTALL_PREFIX
<CMake实践>笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE <CMake实践>笔记二:INSTALL/CMAKE_INSTALL_PREFIX &l ...
- jQuery源码笔记(二):定义了一些变量和函数 jQuery = function(){}
笔记(二)也分为三部分: 一. 介绍: 注释说明:v2.0.3版本.Sizzle选择器.MIT软件许可注释中的#的信息索引.查询地址(英文版)匿名函数自执行:window参数及undefined参数意 ...
- Mastering Web Application Development with AngularJS 读书笔记(二)
第一章笔记 (二) 一.scopes的层级和事件系统(the eventing system) 在层级中管理的scopes可以被用做事件总线.AngularJS 允许我们去传播已经命名的事件用一种有效 ...
- Python 学习笔记二
笔记二 :print 以及基本文件操作 笔记一已取消置顶链接地址 http://www.cnblogs.com/dzzy/p/5140899.html 暑假只是快速过了一遍python ,现在起开始仔 ...
- WPF的Binding学习笔记(二)
原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...
- webpy使用笔记(二) session/sessionid的使用
webpy使用笔记(二) session的使用 webpy使用系列之session的使用,虽然工作中使用的是django,但是自己并不喜欢那种大而全的东西~什么都给你准备好了,自己好像一个机器人一样赶 ...
- AJax 学习笔记二(onreadystatechange的作用)
AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...
- 《MFC游戏开发》笔记二 建立工程、调整窗口
本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9300383 作者:七十一雾央 新浪微博:http:/ ...
- JavaScript基础笔记二
一.函数返回值1.什么是函数返回值 函数的执行结果2. 可以没有return // 没有return或者return后面为空则会返回undefined3.一个函数应该只返回一种类型的值 二.可变 ...
- [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...
随机推荐
- 在Mac下创建ASP.NET Core Web API
在Mac下创建ASP.NET Core Web API 这系列文章是参考了.NET Core文档和源码,可能有人要问,直接看官方的英文文档不就可以了吗,为什么还要写这些文章呢? 原因如下: 官方文档涉 ...
- Autofac - 装配
从容器中的可用服务中, 选取一个构造函数来创造对象, 这个过程就是自动装配. 一.选择构造函数 默认情况下, autofac会使用无参构造函数, 去创建对象. 我将Person类稍微修改了下. pub ...
- LINQ to SQL语句(13)之开放式并发控制和事务
Simultaneous Changes开放式并发控制 下表介绍 LINQ to SQL 文档中涉及开放式并发的术语: 术语 说明 并发 两个或更多用户同时尝试更新同一数据库行的情形. 并发冲突 两个 ...
- 【C#公共帮助类】分页逻辑处理类
分页逻辑处理类 PageCollection.cs using System; using System.Collections.Generic; using System.Linq; using S ...
- python之redis和memcache操作
Redis 教程 Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理.Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据 ...
- nhibernate 中 lazy="no-proxy" 时的问题
在 nhibernate,如果将实体的一个关联属性配置为 lazy="no-proxy",那么,从其他属性计算出来的属性不能正确更新.例如,将以下代码中 Foo.Bar 配置为 l ...
- 十一个行为模式之模板方法模式(Template Method Pattern)
定义: 定义一个操作中算法的框架,并且将一部分操作延迟到子类当中.使得子类可以不改变一个算法的结构即可重新定义算法步骤. 结构图: AbstractClass:抽象方法类,定义了一些基本操作,这些操作 ...
- 几款开源的hybird移动app框架分析
几款开源的Hybrid移动app框架分析 Ionic Onsen UI 与 ionic 相比 jQuery Mobile Mobile Angular UI 结论 很多移动开发者喜欢使用原生代码开发, ...
- jQuery Validation Engine 表单验证
功能强大的 jQuery 表单验证插件,适用于日常的 E-mail.电话号码.网址等验证及 Ajax 验证,除自身拥有丰富的验证规则外,还可以添加自定义的验证规则. 兼容 IE 6+, Chrome, ...
- Struts2(1) —— 概述
1.Struts2框架介绍 Struts2框架是MVC流程框架,适合分层开发,框架应用实现不依赖于Servlet,使用大量的拦截器来处理用户请求,属于无侵入式的设计. 2.Struts2框架的流程原理 ...