随笔分类 - C#
leaning C#
摘要:.NET Framework4.0引入了一个新的关于异步操作的API,它叫做任务并行库(Task Parallel Library,简称TPL)。TPL的核心是任务,一个任务代表一个异步操作,该操作可以通过多种方式运行,可以使用或不使用独立线程运行。 一个任务可以它通过多种方式与其他方式组合起来,T
阅读全文
摘要:简述 创建线程是昂贵的操作,所以为每个短暂的异步操作创建线程会产生显著的开销,线程池就是该问题的解决方案,我们事先分配一定的资源,将这些资源放入资源池,每次需要新的资源,只需从池中获取一个,而不用创建一个新的。当该资源不再被使用时,就就将其返回池中。 ThreadPool类型拥有一个QueueUse
阅读全文
摘要:简述 当一个线程执行递增和递减操作时,其他线程需要依次等待,类似于这种常见的问题通常被称为线程同步问题。 有多种方式实现线程同步。首先,如果无须共享对象,那么就无序进行线程同步。大多数时候,可以通过重新设计程序来移除共享状态,从而去掉重复的同步构造。 如果必须使用共享的状态,第二种方式是只使用原子操
阅读全文
摘要:创建线程 using System; using System.Threading; using System.Threading.Tasks; namespace threadDemo { class Program { static void PrintNumbers() { Console.W
阅读全文
摘要:DLR 在.NET Framework中,DLR2位于System.Dynamic命名空间和System.Runtime.CompilerServices命名空间的几个类中。 dynamic 类型 可以发现staticPerson出现了编译错误,而dynamicPerson并没有,因为定义为dyna
阅读全文
摘要:C# 链表 链表是节点的列表,节点包含两部分:值和链接,其中值部分用于储存数据,链接部分用于指向下一个元素的地址,是引用 类型。 单链表 public class LinkedList { private class Node { internal int value; internal Node
阅读全文
摘要:C#快速排序算法实现及循环条件细节思考 快速排序是一种分治思想的递归排序算法,其基本思想为: 在每一步中,挑选一个主元(pivot)出来,比如第一个元素 然后遍历除主元外的剩下的元素,把所有小于主元的元素放在主元左边,把所有大于主元的元素放在主元右边,那么此时该主元元素所在的位置就是正确的位置,因为
阅读全文
摘要:C#之Stream和IO public class test { public int aa = 100; public string testStr = "test"; public void Save(BinaryWriter bw) { bw.Write(aa); bw.Write(testS
阅读全文
摘要:DOM是什么? 如下是一个xml文件: <?xml version="1.0"?> <Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
阅读全文
摘要:有向无环图 有向图是由顶点和有向边组成的,有向边由上游点和下游点组成,比如(u,v)表示一个有向边,其中u就是该有向边的上游点,v就是该有向边的下游点,入度是指一个顶点作为下游点所在有向边的个数,比如下图中,顶点1的入度是0,顶点3的入度是1,顶点6的入度是2,出度是指一个顶点作为上游点所在有向边的
阅读全文
摘要:简而言之,依赖属性就是一种可以自己没有值,并能通过使用Binding从数据源获得值(依赖在别人身上)的属性。而拥有依赖属性的对象被称为依赖对象。 与传统的CLR属性和面向对象思想相比依赖属性有很多新颖之处: 节省实例对内存的开销。因为属性值在其他对象那里,而不在使用依赖属性的对象这里,所以节省了内存
阅读全文
摘要:在Visual studio中,将图片的属性的“生成操作”从“无”改为"资源"。 最终解决问题:
阅读全文
摘要:在异步程序中,程序代码不需要按编写时的顺序严格执行。有时需要在一个新的线程中运行一部分代码,有时无需创建新的线程,但为了更好的利用单个线程的能力,需要改变代码的执行顺序,从而解决在性能或用户体验上导致的难以接受的行为。 在C#5.0引入的一个来用来构建异步方法的新特性 async/await,但还有
阅读全文
摘要:C# 之LINQ LINQ允许询问任何实现了IEnumerable<T>接口的集合二,不管是数组,列表,或者XML DOM等。它带来了在编译阶段的类型检查和动态查询的双重好处。 基础 LINQ的基本单元是序列(Sequence) 和元素(Element),序列即实现了IEnumerable<T>接口
阅读全文
摘要:C#数组,索引器与集合 数组 数组是具有索引的同类型对象的集合。 声明数组 类型[] 数组名; []会告诉编译器,这是声明了一个数组,类型指定了数组包含的元素的类型。 可以用new关键字来实例化数组。 默认值 值类型数组,每个元素默认是所存类型的默认值;引用类型不能初始化为默认值,而是初始化为nul
阅读全文
摘要:C# 相等比较 有两种类型的相等: 值相等:即两个值是一样的 引用相等:即引用是一样的,也就是同一个对象 默认地,对于值类型来讲,相等指的就是值相等;对于引用类型,相等就是指的引用相等。 int a = 5; int b = 5; Console.WriteLine(a == b); class F
阅读全文
摘要:在C#中string关键字的映射实际上是指向.NET基类System.String。System.String是一个功能非常强大且用途非常广泛的基类,但它不是.NET库中唯一与字符串相关的类。 System.String类 System.String是专门用于储存字符串,允许对字符串进行许多操作的类
阅读全文
摘要:(1)new List并不是null,可以正常的被遍历和AddRange class Program { public static void Main() { //var t = new test(); //t.b = 100; //Console.WriteLine($"{t.b}"); var
阅读全文
摘要:枚举器和可枚举类型 枚举器是一个可以依次返回请求的数组中元素的类实例对象,“知道”项的次序并跟踪它在序列中的位置,然后返回请求的当前项。 对于有枚举器的类型而言,必须有一个方法来获取它。获取一个对象枚举器的方法是调用对象的GetEnumerator方法。实现GetEnumerator方法的类型叫做可
阅读全文
摘要:WPF中ItemsSource改变,DataGrid中不更新 需要将ItemsSource先赋值为null,而后再赋值为新的值。 例如: gridBeamInfo.ItemsSource = null; if (beamInfoList.Count==0) { beamInfoList = new
阅读全文