一、扩展方法
使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。扩展方法被定义为静态方法,但它们是通过实例方法语法进行调用的。 它们的第一个参数指定该方法作用于哪个类型,并且该参数以 this 修饰符为前缀。
二、C#6.0新语法
- 1.Null 条件运算符:用于在执行成员访问 (?.) 或索引 (?[) 操作之前,测试是否存在 NULL。 可帮助编写更少的代码来处理 null 检查。
- 2.C# 6.0 之前catch和finally块中是不能用 await 关键词的。现在我们可以再这两个地方使用await了。
- 3.如果括号表达式(when)的结果为 true 时,才执行对应 catch 块中的语句,否则继续搜索处理程序。
catch (ArgumentNullException e) when (e.ParamName == “…”)
{ }
- 4."$"字符串格式化:var s1 = $"{p.Name} is {p.Age} year{{s}} old";
- 5.C# 5.0 提供的async和await使异步编程更简单
三、异常捕获
try { //执行的代码,其中可能有异常。一旦发现异常,则立即跳到catch执行。否则不会执行catch里面的内容 }
catch { //除非try里面执行代码发生了异常,否则这里的代码不会执行 }
finally { //不管什么情况都会执行,包括try catch 里面用了return ,可以理解为只要执行了try或者catch,就一定会执行 finally }
四、数据库批量插入:
- 1.Statement方式批量执行SQL的优点在于可以执行多条SQL语句,缺点也很明显,需要改变SQL语句时需要修改程序,每次执行都需要重新编译SQL。
- 2.PreparedStatement优点是SQL语句结构不变,并且经过预编译,所以一般适用于一条SQL语句,多行参数。对于插入场景很适用。但是需要知道表中拥有哪些字段,如何设置这些值,如果表结构修改,需要修改代码。
- 3.CallableStatement的方式优点在于只需要了解存储过程中的使用,不需要了解表结构,当表结构改变时,不用修改程序.
- 4.SqlServer的批量插入很简单,使用SqlBulkCopy就可以。
- 5.MySql的批量插入,是将值全部写在语句的values里,例如,insert batcher(id, name) values(1, '1', 2, '2', 3, '3', ........ 10, '10')。
- 6.Oracle只能使用Oracle.DataAccess组件来作为提供者,而insert语句与一般的插入语句没有什么不一样。