.Net

C#基础知识之GC 垃圾回收

.Net所指的托管资源到底是什么意思呢?是相对于所有资源,还是只限于某一方面的资源?很多人对此不是很了解。其实.Net所指的托管只是针对内存这一个方面,并不是对于所有的元素;因此对于Stream,数据库的连接GDI+的相关对象,还有Com对象等等,这些资源并不是受到.Net管理而统称为非托管资源。而对于内存的释放和回收...

.NET的反编译软件

.net的反编译软件,常见的有Reflector,ILSpy,dotPeek,dnspy,本文介绍dnspydnSpy工具可以在网上自行下载https://github.com/0xd4d/dnSpy/releases,软件界面如下:   现在进入话题,首先编写一个HelloWorld的控...
代码星球·2021-02-19

C#基础知识之Ref Out Params 4种类型的参数

值参数是通过将实参的值复制到形参,来实现按值传递到方法,也就是我们通常说的按值传递。方法被调用时,CLR做如下操作:1、在托管栈中为形参分配空间;2、将实参的值复制到形参。这个太常用了,按值传递参数,是复制一份,因此不影响原来参数的值。publicclassProgram{staticvoidMain(string[]...

C#基础知识之父子类,实例、静态成员变量,构造函数的执行顺序

父子类、示例、静态成员变量、构造函数的概念的基础理解完全可以利用下面的示例诠释,非常经典,直接上代码: publicclassShowInfo{publicShowInfo(stringinfo){Console.WriteLine(info);}}classfather{publicstaticShowIn...

C#基础知识之扩展方法

扩展方法需要满足的条件:1、扩展方法必须定义在静态类里。2、扩展方法必须是静态方法。3、扩展方法的第一个参数以this修饰符为前缀。4、扩展方法必须在使用它的类的扩展方法内,否则必须显示的using扩展方法所在的命名空间。5、扩展方法只能被对象调用。6、其他命名空间下的扩展方法优先级低于当前命名空间的扩展方法。7、扩展...
代码星球·2021-02-19

C#基础知识之Partial

C#2.0可以将类、结构或接口的定义拆分到两个或多个源文件中,在类声明前添加partial关键字即可。例如:下面的PartialTest类classPartialTest{  stringStr_FieldTest;  intInt_FieldTest;  publicvoidDoTest()  {    Debug....
代码星球·2021-02-19

C#基础知识之Dynamic类型

Dynamic类型是C#4.0中引入的新类型,它允许其操作掠过编译器类型检查,而在运行时处理。编程语言有时可以划分为静态类型化语言和动态类型化语言。C#和Java经常被认为是静态化类型的语言,而Python、Ruby和JavaScript是动态类型语言。一般而言,动态语言在编译时不会对类型进行检查,而是在运行时识别对象...
代码星球·2021-02-19

C#基础知识之System.AppDomain类

进程是存在独立的内存和资源的,但是AppDomain仅仅是逻辑上的一种抽象。一个process可以存在多个AppDomain。各个AppDomain之间的数据时相互独立的。一个线程可以穿梭多个AppDomain。 ActivationContext获取当前应用程序域的激活上下文。ApplicationIden...
代码星球·2021-02-19

C#基础知识之事件和委托

本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、委托的调用方式、事件的由来、.NetFramework中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论。来看下面这两个最简单的方法,它们不过是在屏幕上输出一句问候的话语:publicvoidGreetPeople(...
代码星球·2021-02-19

C#基础知识之正则表达式

正则表达式 是一种匹配输入文本的模式。.Net框架提供了允许这种匹配的正则表达式引擎。模式由一个或多个字符、运算符和结构组成。实例1下面的实例匹配了以'S'开头的单词:usingSystem;usingSystem.Text.RegularExpressions;namespaceRegExApplicati...
代码星球·2021-02-18

C#基础知识之SharpZipLib压缩解压的使用

  项目中使用 Velocity 将模板和生成的动态内容(HTML、XML等)合并保存到redis数据库中,考虑到压缩的文件容量会比较小,方便传输而且存储所使用的空间也会比较小,所以要压缩一下,读取的时候也要解压,所以就用到了SharpZipLib。  SharpZipLib是一个完全用c#为.ne...

C#基础知识之关键字

关键字是C#编译器预定义的保留字。这些关键字不能用作标识符,但是,如果您想使用这些关键字作为标识符,可以在关键字前面加上@字符作为前缀。在C#中,有些关键字在代码的上下文中有特殊的意义,如get和set,这些被称为上下文关键字(contextualkeywords)。下表列出了C#中的保留关键字(ReservedKey...
代码星球·2021-02-18

C#基础知识之依赖注入

话说有一个叫IGame的游戏公司,正在开发一款ARPG游戏(动作&角色扮演类游戏,如魔兽世界、梦幻西游这一类的游戏)。一般这类游戏都有一个基本的功能,就是打怪(玩家攻击怪物,借此获得经验、虚拟货币和虚拟装备),并且根据玩家角色所装备的武器不同,攻击效果也不同。这天,IGame公司的开发小组正在开会对打怪功能中的...
代码星球·2021-02-18

C#基础知识之IOC

那么到底什么是IoC容器?我们还是先来看看它的出现背景。我们知道,软件开发领域有句著名的论断:不要重复发明轮子!因为软件开发讲求复用,所以,对于应用频繁的需求,总是有人设计各种通用框架和类库以减轻人们的开发负担。例如,数据持久化是非常频繁的需求,于是各种ORM框架应运而生;再如,对MVC的需求催生了Struts等一批用...
代码星球·2021-02-18

C#基础知识之VS的快捷键汇总

VS中默认的常用快捷键。可以根据自己的习惯,自己设置快捷方式,工具->选项->环境->键盘。Ctrl+K,Ctrl+C=注释选定行Ctrl+K,Ctrl+U=取消选定行的注释  Ctrl+E,Ctrl+D=格式化全部代码Ctrl+E,Ctrl+F----格式化选中的代码Shift+End=从头到尾选择...