摘要:C#6.0主要提供了一些语法糖,另外还提供了新的编译器Roslyn地址https://github.com/dotnet/roslyn一下列举几个新增的语法糖:1.构造一个类:public class A{ public long ID{get;set;}=1; public string Na...
阅读全文
摘要:int a=6&3;Console.WriteLine("a={0}",a);//6的二进制是00000110,3的二进制是00000011,按位与后等于00000010,即2int b=6|3;Console.WriteLine("b={0}",b);//6的二进制是00000110,3的二进制是00000011,按位或后等于00000111,即7int c=~6;Console.WriteLine("c={0}",c);//6的二进制是00000110,按位取反后是11111001即-7int d=6^3;Console.
阅读全文
摘要:C#集合类型的基类为ICollection和ICollection<T>,IList<T>和IList分别是他们的子类,表示可按照索引单独访问的一组对象IList<T>和IList添加了索引器,所以可以通过索引的方法访问集合.如果其他自定义的集合类只继承了ICollection和ICollection<T>类型,以求更大的灵活性,那么如果我自定义一个集合类型用于访问和删除集合中类型并且兼容所有集合的时候必须加以区别,IList<T> list = collection as IList<T>;如果collection继承I
阅读全文
摘要:yield一般有两种形式yield retrun和yield break为了区别yield retrun和yield break分别声明了两个方法public static IEnumerable PowerReturn(int baseNumber, int highExponent) { int result = 1; for (int counter = 1; counter <= highExponent; counter++) { result = result * base...
阅读全文
摘要:今天使用了RuntimeHelpers.PrepareConstrainedRegions()方法放在try块之前,然后用ReliabilityContract特性标记了一个方法,在执行try块之前CRL会对catch块和finally做JIT编译,如果在方法中发生了异常,则程序在进入try块之前就会把异常抛出来,这样可以避免类的状态发生改变,如果发生错误不能恢复.具体代码如下private static void Demo2() { RuntimeHelpers.PrepareConstrainedRegions(); try ...
阅读全文
摘要:查看MSDN如下:Control..::.Invoke ---> 在拥有此控件的基础窗口句柄的线程上执行委托。Control..::.BeginInvoke ---> 在创建控件的基础句柄所在线程上异步执行委托。 显然,Invoke() 与 BeginInvoke() 方法间的主要区别在于“异步”关键字眼。 也就是说,Invoke() 调用时,会阻塞当前线程,等...
阅读全文
摘要:不需要传递参数,也不需要返回参数 我们知道启动一个线程最直观的办法是使用Thread类,具体步骤如下:ThreadStart threadStart=new ThreadStart(Calculate);Thread thread=new Thread(threadStart); thread.Start();public void Calculate() { double Diameter=...
阅读全文
摘要:本文收集了目前最为常用的C#经典操作文件的方法,具体内容如下:C#追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件、指定文件夹下面的所有内容copy到目标文件夹下面、指定文件夹下面的所有内容Detele、读取文本文件、获取文件列表、读取日志文件、写入日志文件、创建HTML文件、CreateDirectory方法的使用C#追加文件 StreamWriter sw = File.Append...
阅读全文
摘要:1.抽象类可以有实现(包括构造函数),而接口不可以有任何实现。namespace ConsoleApplication1 { class Program { interface IMyInterface1 { void IMethod1(); void IMethod2(); } abstract class AMyClass1 { public abstract void A...
阅读全文
摘要:22.4 yield 语句 yield语句用于迭代器块以产生一个枚举器对象值,或表明迭代的结束。 embedded-statement:(嵌入语句) ... yield-statement(yield语句) yield-statement:(yield 语句) yield return expression ; yield break ; 为了确保和现存程序的兼容性,yield并不是一个保留字,并...
阅读全文
摘要:22.1迭代器块 迭代器块就是产生值的有序序列的语句块。迭代器块通过一个或多个yield语句区别于常规语句块。 l yield return 语句产生迭代的下一个值。 l yield break 语句指明迭代完成。 迭代器块可以被用作一个方法体(method-body)、运算符体(operator-body)、访问器体(accessor-body),前提是对应函数成员的返回类型是枚举器(enume...
阅读全文
摘要:List<T>类:表示可通过索引访问的对象的强类型列表,提供用于对列表进行搜索、排序和操作的方法。IList<T>接口:表示可按照索引单独访问的一组对象。下面谈谈它们之间的区别:首先,List<T>是一个类,IList<T>是一个接口。接口和类的区别是本质的,类是负责功能的实现,而接口则是负责功能的定义。所以它们的区别本质上也就是类和接口的区别。具体...
阅读全文