《C# 6.0 本质论》 阅读笔记
《C# 6.0 本质论》 阅读笔记
阅读笔记不是讲述这本书的内容,只是提取了其中一部分我认为比较重要或者还没有掌握的知识,所以如果有错误或者模糊之处,请指正,谢谢!
对于C# 6.0才有的新语法基本都有标记,开发的时候要注意使用,以免造成不兼容现象。
一。第一章
1.控制台中可以使用,其会在每一次输入的时候获取键盘输入的值。可以用Console.ReadKey().KeyChar获取输入的字符。
void UseReadKey()
{
var a = Console.ReadKey().KeyChar;
Console.WriteLine(a);
}
2.C#6.0新语法:$"this is {变量名}" 可以在大括号中直接输入变量名调用,类似于string.Format(),更加简洁。

void UseNewFormat()
{
string FirstName = "First";
string LastName = "Last";
Console.WriteLine($"The Name is :{FirstName} {LastName}");
}

3.静态引用 using Static System.Console; 可以将Console.WriteLine();缩写成WriteLine(); 仅能对静态函数缩写。
using static System.Console;
void UseStaticUsing()
{
string Str = Read();
WriteLine(Str);
}
二。第二章
1.小数位过多时候,直接转换为字符串会丢失精度,使用 string.Format("{0:R}",a);就不会丢失精度。

void UsingFormatR()
{
double Str=3.15489764531879874;
Console.WriteLine(Str);//会丢失一部分 显示3.154897645318
Console.WriteLine("{0:R}",Str);//不会丢失 显示3.1548976453187989 为什么会比赋值数值少,因为
}

2.可空修饰符 值类型+? 默认值为null
void UseNullable()
{
double? Db = null;
int? It = null;
}
3.尝试转换 值类型特有 只在可以转换的时候进行转换。

string a = "456789"; string b = "abce456"; int inta=0; int intb=0; var boola = int.TryParse(a,out inta);//返回true,inta=456789 var boolb= int.TryParse(b,out intb);//返回false,intb=0

4.溢出检测 checked{} 当块内的数据溢出的时候会抛出错误。
checked
{
long b = 894156132165798;
int a = Convert.ToInt16(b);
}
5.返回值 default(T) 可以返回任何类型的默认值。
return default(int?); return default(int);
6.二维数组 int[,] a=new int[3,4]; Console.WriteLine(a[1,1]);
交错数组 int[][] a={new int[] {1,2},new int[] {3,4}};Console.WriteLine(a[1][1]);
7.数组扩充 Array.Resize(ref a,100); 将原有数组a中的内容复制到新数组中,并且新数组的长度为100,然后将原有数组a指向新数组。
int[] a = new int[10];//数组a的长度为10
Array.Resize(ref a, 100);//数组a的长度为100
三。第三章
1.数值型数据两个特殊值:Nan Not a Number(非数值) ,Infinty(无穷)
2.在多线程中使用i++,i--等自增自减,由于该操作不是原子性操作,可能造成竞争资源。为了防止该现象出现,可以使用System.Threading.Interlocked.Increment(ref i);自增
或者System.Threading.Interlocked.Decrement(ref i);自减
int i = 10;
System.Threading.Interlocked.Increment(ref i);//i=11
System.Threading.Interlocked.Decrement(ref i);//i=10
3. ??操作符 二元操作符号,当左边的值为null时候取右边的值。 左边的值必须是可以为null的,包括引用类型和可空类型。
int? a = null;
int b= a ?? 18;
4.C#6.0新语法 ?. 判断实例是否为null,如果返回值为值类型会返回值的可空类型。例如new Person() ?.age的值是0
5.位运算【!!!!未学明白!!!!】 ^(异或) ,&(同或),|(与非),~(按位取反), 掩码,位映射
6.预处理
四。第四章
1.命名空间使用别名
using CountDownTimer=System.Timers.Timer;
2.可变参数 :

private static void xianshi(params string[] str)
{
foreach (var item in str)
{
Console.WriteLine(item);
}
}

参数带params表示该函数是可变参数,可变参数必须是一位数组,可以接受该类型的值和一维数组的值。且可变参数必须是参数列表最后一个参数(仅可以一个)。
3.可选参数:在参数中可以给参数赋初始值,当没有输入该参数的时候,将会使用默认值。
private static void GetList(string whereStr = "", string OrderStr = "", string Go = "")
{
Console.WriteLine(whereStr + OrderStr + Go);
}
3.指定参数名调用
五。第五章 类
1。资源回收:GC会自动回收托管资源。 隐式确定性资源清理 使用终结器 ;显式确定性资源 使用using(){};
2。自动属性也可以赋默认值。 public string Name{get;set;}="NoName";
3.C#6.0 :nameof(<变量>) 取变量名变成字符串,可以防止当变量名改变后,忘记修改对应的字符串。 语法糖。
4.C#6.0 :支持只读属性的自动实现(赋默认值)
5.对象初始化器 :在已有Person类的情况下: Person Ps=new Person(){Name="Liu",Age="11"};
6.构造器链:构造函数1:public Employee(string firstName ,string lastName) {this.FirstName=firstName;this.LastName=lastName}
构造函数2:public Employee(int id,string firstName ,string lastName):this(firstName,lastName){this.ID=id};
构造函数2使用了构造函数1的方法,形成构造链。
7.静态构造函数:在类被首次访问的时候执行。
8.静态属性:静态字段可以使用属性实现。
9.静态类:编译器会自动标记为abstract和saled ,所以不可以继承。 静态类中实例方法是没有意义的。
10.分部类:partial class Person{} ;分部类只允许在同一程序集中实现。分部类需要声明方法才可以调用,并且分部方法之前要加partial,分部方法只能返回void,且不允许使用out,可以使用ref。
checkbox
创建:<input type="checkbox" id="ck">
选中取消:
原生js: document.getElementById("ck").checked = true[false];
Jquary: $("#ck").attr("checked", true[false]);
获取是否选中:
原生js:var d = document.getElementById("ck").checked;
Jquary:var d = $("#ck").is(":checked");
《C# 6.0 本质论》 阅读笔记的更多相关文章
- 阅读《RobHess的SIFT源码分析:综述》笔记
今天总算是机缘巧合的找到了照样一篇纲要性质的文章. 如是能早一些找到就好了.不过“在你认为为时已晚的时候,其实还为时未晚”倒是也能聊以自慰,不过不能经常这样迷惑自己,毕竟我需要开始跑了! 就照着这个大 ...
- RobHess的SIFT源码分析:imgfeatures.h和imgfeatures.c文件
SIFT源码分析系列文章的索引在这里:RobHess的SIFT源码分析:综述 imgfeatures.h中有SIFT特征点结构struct feature的定义,除此之外还有一些特征点的导入导出以及特 ...
- RobHess的SIFT源码分析:综述
最初的目的是想做全景图像拼接,一开始找了OpenCV中自带的全景拼接的样例,用的是Stitcher类,可以很方便的实现全景拼接,而且效果很好,但是不利于做深入研究. 使用OpenCV中自带的Stitc ...
- 阅读《RobHess的SIFT源码分析:综述》笔记2
今天开始磕代码部分. part1: 1. sift特征提取. img1_Feat = cvCloneImage(img1);//复制图1,深拷贝,用来画特征点 img2_Feat = cvCloneI ...
- element-ui button组件 radio组件源码分析整理笔记(一)
Button组件 button.vue <template> <button class="el-button" @click="handleClick ...
- element-ui 组件源码分析整理笔记目录
element-ui button组件 radio组件源码分析整理笔记(一) element-ui switch组件源码分析整理笔记(二) element-ui inputNumber.Card .B ...
- element-ui Carousel 走马灯源码分析整理笔记(十一)
Carousel 走马灯源码分析整理笔记,这篇写的不详细,后面有空补充 main.vue <template> <!--走马灯的最外层包裹div--> <div clas ...
- STL源码分析读书笔记--第二章--空间配置器(allocator)
声明:侯捷先生的STL源码剖析第二章个人感觉讲得蛮乱的,而且跟第三章有关,建议看完第三章再看第二章,网上有人上传了一篇读书笔记,觉得这个读书笔记的内容和编排还不错,我的这篇总结基本就延续了该读书笔记的 ...
- element-ui MessageBox组件源码分析整理笔记(十二)
MessageBox组件源码,有添加部分注释 main.vue <template> <transition name="msgbox-fade"> < ...
- element-ui switch组件源码分析整理笔记(二)
源码如下: <template> <div class="el-switch" :class="{ 'is-disabled': switchDisab ...
随机推荐
- iOS从手机相册选择一张照片并显示 Objective-C
要先给app设置访问相册的权限: 在项目的Info.plist文件里添加Privacy - Photo Library Usage Description权限 ViewController.h: #i ...
- java.lang.RuntimeException: java.lang.NullPointerException...的错误
先FQ,让电脑能登上谷歌,然后重新安装,应该就好了,我的是这样解决的.如果下次安装又报:java.lang.RuntimeException: java.lang.NullPointerExcepti ...
- LR中日志参数的设置
LR中日志参数的设置 1.Run-Time Setting日志参数的设置 在loadrunner的vuser菜单下的Run-Time Setting的General的LOG选项中可以对在执行脚本时Lo ...
- 【DVWA】【SQL Injection】SQL注入 Low Medium High Impossible
1.初级篇 low.php 先看源码,取得的参数直接放到sql语句中执行 if( isset( $_REQUEST[ 'Submit' ] ) ) { // Get input $id = $_REQ ...
- C++_运算符重载 总结
什么是运算符的重载? 运算符与类结合,产生新的含义. 为什么要引入运算符重载? 作用:为了实现类的多态性(多态是指一个函数名有多种含义) 怎么实现运算符的重载? 方式:类的成员函数 或 友元函数(类外 ...
- jmeter普通的接口测试
摘自:后知者.https://www.cnblogs.com/houzhizhe/p/6838731.html jmeter可以做接口测试,其中接口测试的简单操作包括做http脚本(发get/post ...
- mac os 10.10解决pod问题
转一下 http://leancodingnow.com/how-to-get-cocoapods-work-on-yosemite/
- 模拟--P1427 小鱼的数字游戏
题目描述 小鱼最近被要求参加一个数字游戏,要求它把看到的一串数字(长度不一定,以0结束,最多不超过100个,数字不超过2^32-1),记住了然后反着念出来(表示结束的数字0就不要念出来了).这对小鱼的 ...
- Qt 如何处理密集型耗时的事情
有时候需要处理一些跟界面无关的但非常耗时的事情,这些事情跟界面在同一个线程中,由于时间太长,导致界面无法响应,处于“假死”状态.例如:在应用程序中保存文件到硬盘上,从开始保存直到文件保存完毕,程序不响 ...
- [USACO15JAN]Grass Cownoisseur
\(tarjan\)缩点+\(DAG\)上最长路. 求一个以\(1\)为起点的最长路和一个以\(1\)为终点的最长路,然后找那个逆行边就行了. 然后这个我\(RE\)了好久,原因是\(vector\) ...