博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《C# 6.0 本质论》 阅读笔记
阅读量:6172 次
发布时间:2019-06-21

本文共 3861 字,大约阅读时间需要 12 分钟。

 

阅读笔记不是讲述这本书的内容,只是提取了其中一部分我认为比较重要或者还没有掌握的知识,所以如果有错误或者模糊之处,请指正,谢谢!

对于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。

 

 

 

 

创建:<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");

转载地址:http://uvtba.baihongyu.com/

你可能感兴趣的文章
Openstack架构及基本概念理解
查看>>
默认路由
查看>>
CYQ.Data 轻量数据层之路 框架开源系列 索引
查看>>
zabbix(2)使用自带模板完成基本监控
查看>>
安装rrdtool出现的错误
查看>>
木马隐藏地点全搜查
查看>>
Subversion版本控制
查看>>
奇怪的打印纸盘故障
查看>>
hyperledger v1.0.5 区块链运维入门(一)
查看>>
Mybatis-mapper-xml-基础
查看>>
5. GC 调优(基础篇) - GC参考手册
查看>>
Windows 7 XP 模式颜色质量只有16位的解决
查看>>
SonicWall如何安全模式升级防火墙
查看>>
Linux IPC实践(3) --具名FIFO
查看>>
从Atlas到Microsoft ASP.NET AJAX(6) - Networking, Application Services
查看>>
成长之路---写好一个类
查看>>
读取 java.nio.ByteBuffer 中的字符串(String) 写入方式flash.utils.ByteArray.writeUTF
查看>>
范围管理和范围蔓延
查看>>
android90 bind方式启动服务service调用service里的方法
查看>>
前端开发薪资之各地区对比(图文分析)(share)
查看>>