随笔分类 - C# 托管和非托管
摘要:namespace ConsoleDemo{ class Program { static void Main(string[] args) { string[] str = { "1", "1", "1", "1", "1", "1", "1", "1" }; var m = getInts(st
阅读全文
摘要:namespace 异步编程{ class Program { static void Main(string[] args) { Console.WriteLine("mian this is async{0}", Thread.CurrentThread.ManagedThreadId); Do
阅读全文
摘要:对于yield关键字我们首先看一下msdn的解释: 如果你在语句中使用 yield 关键字,则意味着它在其中出现的方法、运算符或 get 访问器是迭代器。 通过使用 yield 定义迭代器,可在实现自定义集合类型的 IEnumerable 和 IEnumerator 模式时无需其他显式类(保留枚举状
阅读全文
摘要:写在前面 在开始之前,我们需要明确什么是C#(或者说.NET)中的资源,打码的时候我们经常说释放资源,那么到底什么是资源,简单来讲,C#中的每一种类型都是一种资源,而资源又分为托管资源和非托管资源,那这又是什么?! 托管资源:由CLR管理分配和释放的资源,也就是我们直接new出来的对象; 非托管资源
阅读全文
摘要:1.using指令 using+命名空间,这种方法基本学习过C#的都用过,好处在于,写代码的时候不需要指定详细的命名空间 using System.Windows.Media; using System.Windows.Media.Imaging; 2.using语句 是用来简化资源释放的,在一定的
阅读全文
摘要:集合相当于容器,用于将一系列相似的项组合在一起。 集合可以分为泛型集合类和非泛型集合类。 多数集合类都是派生自ICollection、IComparer、IEnumerable、IList、IDictionary和IDictionaryEnumerator接口以及它们的等效泛型接口,可继承这些接口来
阅读全文
摘要:今天帮助同事做了一个WPF版的多线程demo,分享给大家。 要实现的问题就是非主线程thread1 去后台不停的取新数据,当有新数据的时候就会展示到前台。 我给他做的demo实现一个按秒的计数器,随着时间然后每秒数据加1, 这个demo涉及到的点有 多线程,垮线程更改控件的值Dispatcher的使
阅读全文
摘要:GC的前世与今生 虽然本文是以.net作为目标来讲述GC,但是GC的概念并非才诞生不久。早在1958年,由鼎鼎大名的图林奖得主John McCarthy所实现的Lisp语言就已经提供了GC的功能,这是GC的第一次出现。Lisp的程序员认为内存管理太重要了,所以不能由程序员自己来管理。但后来的日子里L
阅读全文
摘要:where 子句用于指定类型约束,这些约束可以作为泛型声明中定义的类型参数的变量。 1.接口约束。 例如,可以声明一个泛型类 MyGenericClass,这样,类型参数 T 就可以实现 IComparable<T> 接口: public class MyGenericClass<T> where
阅读全文
摘要:表原因及如何处理 锁表发生在insert update 、delete 中 锁表的原理是 数据库使用独占式封锁机制,当执行上面的语句时,对表进行锁住,直到发生commite 或者 回滚 或者退出数据库用户 锁表的原因 A程序执行了对 tableA 的 insert ,并还未 commite时,B程序
阅读全文
摘要:什么是线程池?为什么要用线程池?怎么用线程池? 1. 什么是线程池? .NET Framework的ThreadPool类提供一个线程池,该线程池可用于执行任务、发送工作项、处理异步 I/O、代表其他线程等待以及处理计时器。那么什么是线程池?线程池其实就是一个存放线程对象的“池子(pool)”,他提
阅读全文
摘要:一.先来说说数组的不足(也可以说集合与数组的区别): 1.数组是固定大小的,不能伸缩。虽然System.Array.Resize这个泛型方法可以重置数组大小,但是该方法是重新创建新设置大小的数组,用的是旧数组的元素初始化。随后以前的数组就废弃!而集合却是可变长的 2.数组要声明元素的类型,集合类的元
阅读全文
摘要:抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。 一、抽象类: 抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普
阅读全文
摘要:大致来说,委托是一个类,该类内部维护着一个字段,指向一个方法。事件可以被看作一个委托类型的变量,通过事件注册、取消多个委托或方法。本篇分别通过委托和事件执行多个方法,从中体会两者的区别。 □ 通过委托执行方法 class Program { static void Main(string[] arg
阅读全文
摘要:1.什么是表达式目录树 :简单的说是一种语法树,或者说是一种数据结构(Expression) 2.用Lambda声明表达式目录树: 1 2 3 4 5 Expression<Func<int, int, int>> exp = (n, m) => n * m + 2; //表达试目录树的方法体只能是
阅读全文
摘要:众所周知C#提供Async和Await关键字来实现异步编程。在本文中,我们将共同探讨并介绍什么是Async 和 Await,以及如何在C#中使用Async 和 Await。 同样本文的内容也大多是翻译的,只不过加上了自己的理解进行了相关知识点的补充,如果你认为自己的英文水平还不错,大可直接跳转到文章
阅读全文
摘要:委托 委托是什么? 委托是一种引用类型(其实就是一个类,继承MulticastDelegate特殊的类。),表示对具有特定参数列表和返回类型的方法的引用。 每个委托提供Invoke方法, BeginInvoke和EndInvoke异步方法 为什么需要委托? 委托可以将方法(即逻辑)作为参数; 逻辑解
阅读全文
摘要:.NET多线程是什么? 进程与线程 进程是一种正在执行的程序。 线程是程序中的一个执行流。 多线程是指一个程序中可以同时运行多个不同的线程来执行不同的任务。 .NET中的线程 Thread是创建和控制线程的类。 ManagedThreadId是线程ID。 CurrentThread是获取当前正在运行
阅读全文
摘要:众所周知C#提供Async和Await关键字来实现异步编程。在本文中,我们将共同探讨并介绍什么是Async 和 Await,以及如何在C#中使用Async 和 Await。 同样本文的内容也大多是翻译的,只不过加上了自己的理解进行了相关知识点的补充,如果你认为自己的英文水平还不错,大可直接跳转到文章
阅读全文