代码改变世界

随笔分类 -  C#

C#异步模式

2021-07-20 08:06 by 阿诚de窝, 463 阅读, 收藏, 编辑
摘要: C#提供了几种针对异步代码编程的模式,我们一个一个看一下。 APM APM即异步编程模型的简写(Asynchronous Programming Model),.NET 1.0 就开始提供的异步编程方式。 针对一些需要异步编程的同步方法,会同时提供BeginXXX和EndXXX的异步编程搭配方法,比 阅读全文

C#多线程

2021-02-24 18:06 by 阿诚de窝, 871 阅读, 收藏, 编辑
摘要: C#多线程简单示例 Thread类构造函数可以传入一个委托,作为线程调用的方法。 1 using System; 2 using System.Threading; 3 4 namespace Test 5 { 6 public class Thread1 7 { 8 public static v 阅读全文

C#一些知识点:委托和事件的区别

2015-08-25 19:04 by 阿诚de窝, 1130 阅读, 收藏, 编辑
摘要: 在C#中,委托和事件是比较容易混淆的两个知识点,本篇博客就记录一下委托和事件之间的区别。定义上的区别委托:委托实际上是一个类,用来表示一个函数,可以理解为C++中的函数指针。事件:事件是一个修饰符,用来修饰一个委托类型的属性,表示该委托的部分功能被限制了。我们可以这么理解:委托是类,定义了委托后,就... 阅读全文

C#学习笔记(十六):Attribute

2015-07-25 16:47 by 阿诚de窝, 403 阅读, 收藏, 编辑
摘要: Attribute可以为类或方法添加一些附加的信息,我们可以看看MSDN对Attribute的描述:公共语言运行时允许你添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型、字段、方法和属性等。Attributes和Microsoft .NET Framework文... 阅读全文

C#学习笔记(十五):预处理指令

2015-07-24 13:15 by 阿诚de窝, 370 阅读, 收藏, 编辑
摘要: C#和C/C++一样,也支持预处理指令,下面我们来看看C#中的预处理指令。#region代码折叠功能,配合#endregion使用,如下:点击后如下:条件预处理条件预处理可以根据给出的条件决定最终进行编译的代码,换句话说可以排除掉指定的代码不进行编译。#define定义一个宏,注意只要定义名称就行了... 阅读全文

C#学习笔记(十四):GC机制和弱引用

2015-07-21 17:36 by 阿诚de窝, 2927 阅读, 收藏, 编辑
摘要: 垃圾回收(GC)垃圾回收即Garbage Collector,垃圾指的是内存中已经不会再使用的对象,通过收集释放掉这些对象占用的内存。GC以应用程序的root为基础,遍历应用程序在Heap上动态分配的所有对象,通过识别它们是否被引用来确定哪些对象是已经死亡的、哪些仍需要被使用。已经不再被应用程序的r... 阅读全文

C#学习笔记(十三):I/O操作

2015-07-16 19:16 by 阿诚de窝, 984 阅读, 收藏, 编辑
摘要: C#的IO操作主要是针对文件夹和文件的读取和写入操作,下面我们来学习一下相关操作的类。获取文件信息Directory和DirectoryInfo两个类的功能基本相同,区别如下:前者继承System.Object,后者继承抽象类FileSystemInfo;前者是静态类,后者是非静态类,需要new创建... 阅读全文

C#学习笔记(十二):正则表达式

2015-07-15 13:42 by 阿诚de窝, 321 阅读, 收藏, 编辑
摘要: Regex正则表达式的类,我们可以通过该类来使用正则表达式。比如下面我们使用Regex来判断输入的字符串是否符合指定的格式: 1 using System; 2 using System.Text.RegularExpressions; 3 4 namespace Study 5 { 6 ... 阅读全文

C#学习笔记(十一):动态类型

2015-07-13 19:26 by 阿诚de窝, 2616 阅读, 收藏, 编辑
摘要: C#是一门静态类型的语言,但是在C#4.0时微软引入了动态类型的概念。dynamic关键字dynamic用来定义动态对象,我们来看一下动态类型的一些特性。调用不同类的相同方法我们有两个或多个不相关的类,然后运行时需要可以调用到相同名称的方法,如下: 1 using System; 2 3 name... 阅读全文

C#学习笔记(十):反射

2015-07-13 18:33 by 阿诚de窝, 350 阅读, 收藏, 编辑
摘要: 反射放射是指在程序运行时动态的获取类的信息的机制,我们下面来看看C#中的反射。TypeType 为 System.Reflection 功能的根,也是访问元数据的主要方式。 使用 Type 的成员获取关于类型声明的信息,如构造函数、方法、字段、属性 (Property) 和类的事件,以及在其中部署该... 阅读全文

C#学习笔记(九):LINQ和表达式树

2015-07-10 13:25 by 阿诚de窝, 1026 阅读, 收藏, 编辑
摘要: LINQLINQ:语言集成查询(Language Integrated Query)是一组用于c#和Visual Basic语言的扩展。它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作内存数据。借助于LINQ技术,我们可以使用一种类似SQL的语法来查询任何形式的数据。目前为止... 阅读全文

C#学习笔记(八):扩展方法

2015-07-09 18:51 by 阿诚de窝, 310 阅读, 收藏, 编辑
摘要: 还记得第一次使用DOTween时,发现缓动方法竟然是可以直接用Transform对象中调用到,当时就被震撼到了(那是还是C#小白一只)。好了不多说了,今天来学习一下C#的这个特性——扩展方法。扩展方法简介扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型... 阅读全文

C#学习笔记(七):智能编译器

2015-07-09 12:47 by 阿诚de窝, 338 阅读, 收藏, 编辑
摘要: 自动实现属性C#提供的set/get可以让我们很方便的使用属性,但是某些情况下书写还是稍微麻烦了点,如下: 1 public class Test 2 { 3 private string _name; 4 5 public string name 6 { 7 ... 阅读全文

C#学习笔记(六):可空类型、匿名方法和迭代器

2015-07-07 13:25 by 阿诚de窝, 543 阅读, 收藏, 编辑
摘要: 可空类型为啥要引入可空类型?在数据库中,字段是可以为null值的,那么在C#中为了方便的操作数据库的值,微软引入了可空类型。声明可空类型我们可以使用两种方法声明一个可空类型:1 Nullable i = null;2 int? i = null;第二行是第一行的简写方法,其中“?”是微软为可空类型提... 阅读全文

C#学习笔记(五):泛型

2015-07-06 19:16 by 阿诚de窝, 344 阅读, 收藏, 编辑
摘要: 认识泛型泛型使类型参数化,从而实现了算法上的代码重用。同时由于去掉了转换中装箱和拆箱的操作,使用泛型还可以提高程序的运行速度。我们先看看C#自带的使用了泛型的类: 1 using System.Collections.Generic; 2 3 namespace Study 4 { 5 c... 阅读全文

C#学习笔记(四):委托和事件

2015-07-01 19:04 by 阿诚de窝, 293 阅读, 收藏, 编辑
摘要: 刚开始学习C#的时候就写过了,直接给地址了:委托、匿名函数、Lambda表达式和事件的学习委托学习续:Action、Func和Predicate 阅读全文

C#学习笔记(三):值类型、引用类型及参数传递

2015-07-01 18:51 by 阿诚de窝, 547 阅读, 收藏, 编辑
摘要: 值类型和引用类型简介C#中存在两种数据类型,分别是值类型与引用类型,下面我们来看看这两种类型的区别。值类型主要包括:简单类型(如int、float、char等,注意string不是值类型);枚举类型(enum);结构体类型(struct);引用类型主要包括:类类型(如string);数组类型(一维或... 阅读全文

C#学习笔记(二):继承、接口和抽象类

2015-06-29 13:18 by 阿诚de窝, 481 阅读, 收藏, 编辑
摘要: 继承密封类密封类(关键字sealed)是不允许其它类继承的,类似Java中的final关键字。1 public sealed class SealedClassName2 {3 //...4 }初始化顺序子类初始化顺序如下:初始化类的实例字段;调用基类的构造函数;调用子类的构造函数。 1 u... 阅读全文

C#学习笔记(一):一些零散但重要的知识点汇总

2015-05-09 12:19 by 阿诚de窝, 663 阅读, 收藏, 编辑
摘要: 集合类型数组数组需要注意的就是多维数组和数组的数组之间的区别,如下: 1 using System; 2 3 namespace Study 4 { 5 class Program 6 { 7 static void Main(string[] args) 8 ... 阅读全文

Protobuf-net学习笔记

2015-05-03 14:56 by 阿诚de窝, 1338 阅读, 收藏, 编辑
摘要: 对于Socket应用来说,如何序列化和反序列化消息一直是比较头痛的问题,C#提供了自动序列化的功能(类似AS3中的AMF),但是唯一的缺点就是前后端都必须是C#实现,如果前后端语言不一致该怎么办?Google的Protobuf很好的解决了这个问题,支持类似C++、Java等主流语言,但是官方版本未提... 阅读全文