11 2019 档案
摘要:重要事项: 子句必须按照一定的顺序出现 from子句和select。。。group子句这两部分是必须的 其他子句是可选的 在LINQ查询表达式中,select子句在表达式最后。 可以后任意多的from。。。let。。。where子句 from 子句 必须的 from。。。let。。。where 子句
阅读全文
摘要:LINQ查询可以返回两种类型的结果 枚举和标量(scalar)的单一值 1 namespace ConsoleApplication46 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 int[] numbers = {
阅读全文
摘要:namespace ConsoleApplication45 { class Program { static void Main(string[] args) { int[] numbers = { 2, 5, 28, 31, 17, 16, 42 }; var numsQuery = from
阅读全文
摘要:Lambda表达式详解 前言 1、天真热,程序员活着不易,星期天,也要顶着火辣辣的太阳,总结这些东西。 2、夸夸lambda吧:简化了匿名委托的使用,让你让代码更加简洁,优雅。据说它是微软自c#1.0后新增的最重要的功能之一。 lambda简介 lambda运算符:所有的lambda表达式都是用新的
阅读全文
摘要:匿名类型注意事项: 匿名类型只能和局部变量配合使用,不能用于成员。 由于匿名类型没有名字,我们必须使用var关键字作为变量类型。 不能设置匿名类型对象的属性。编译器为匿名类型穿件的属性是只读的。 除了对象初始化语句的赋值形式,匿名类型的对象初始化语句还有两种允许的形式:简单标识符和成员访问表达式。这
阅读全文
摘要:定义:我们如何把现实中大量而复杂的问题以特定的数据类型(个体)和特定的存储结构(个体之间的关系)保存到主存储器(内存)中,以及在此基础上为实现某个功能(比如查找某个元素、删除某个元素,对所有元素进行排序)而执行的响应操作,这个相应的操作也叫算法 数据结构 = 个体 + 个体的关系 算法 = 对存储数
阅读全文
摘要:枚举器的迭代器模式 class MyClass { public IEnumrator<string> GetEnumerator() { return IteratorMethod(); } public IEnumerator<string> IteratorMethod() { yield r
阅读全文
摘要:对于非泛型接口形式 IEnumerable 接口的GetEnumerator方法返回实现IEnumerator枚举器的实例
阅读全文
摘要:delegate T Factory<out R, in S , T>() // out R 协变 in S 逆变 T 不变 public delegate TR Func<T1, T2, TR>(T1 p1, T2 p2); //泛型委托 TR委托返回类型 T1,T2 委托参数类型 class S
阅读全文
摘要:深入理解 C# 协变和逆变 msdn 解释如下: “协变”是指能够使用与原始指定的派生类型相比,派生程度更大的类型。 “逆变”则是指能够使用派生程度更小的类型。 解释的很正确,大致就是这样,不过不够直白。 直白的理解: “协变”->”和谐的变”->”很自然的变化”->string->object :
阅读全文
摘要:泛型 1, 什么是泛型? 在理解泛型的定义之前,我们要明白非泛型的概念,非泛型就是大部分情况下是声明一个类,然后封装需要的行为,最后创建这些类的实例。 泛型是一种更准确地使用有一种以上的类型的代码的方式。泛型允许我们声明类型参数化的代码,我们可以用不同的类型进行实例化。总结为一句话就是,泛型类型是类
阅读全文
摘要:本文详细分析了C#中struct和class的区别,对于C#初学者来说是有必要加以了解并掌握的。 简单来说,struct是值类型,创建一个struct类型的实例被分配在栈上。class是引用类型,创建一个class类型实例被分配在托管堆上。但struct和class的区别远不止这么简单。 概括来讲,
阅读全文