C#学习
白猫A
这个作者很懒,什么都没留下…
展开
-
NuGet的简单使用
什么是NuGet?NuGet(读作New Get)是用于微软.NET开发平台的软件包管理器,是一个Visual Studio的扩展。在使用Visual Studio开发基于.NET Framework的应用时,NuGet能够令你在项目中添加、移除和更新引用的工作变得更加快捷方便。通过NuGet你可以很容易的访问到其他开发者发布的软件包,你也可以创建、分享或者发布自己的包到NuGet。微软的Enti...转载 2018-06-13 10:51:43 · 214 阅读 · 0 评论 -
C#委托
C# 委托(Delegate)C# 中的委托(Delegate)类似于 C 或 C++ 中函数的指针。委托(Delegate) 是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。委托(Delegate)特别用于实现事件和回调方法。所有的委托(Delegate)都派生自 System.Delegate 类。声明委托(Delegate)委托声明决定转载 2017-10-16 09:52:20 · 416 阅读 · 0 评论 -
C#属性
C# 属性(Property)属性(Property) 是类(class)、结构(structure)和接口(interface)的命名(named)成员。类或结构中的成员变量或方法称为 域(Field)。属性(Property)是域(Field)的扩展,且可使用相同的语法来访问。它们使用 访问器(accessors) 让私有域的值可被读写或操作。属性(Property)不会确转载 2017-10-12 10:49:06 · 284 阅读 · 0 评论 -
C# 正则表达式
C# 正则表达式正则表达式 是一种匹配输入文本的模式。.Net 框架提供了允许这种匹配的正则表达式引擎。模式由一个或多个字符、运算符和结构组成。定义正则表达式下面列出了用于定义正则表达式的各种类别的字符、运算符和结构。字符类限定符定位点分组构造字符转义反向引用构造备用构造替换杂项构造字符类字符类与一组字符中转载 2017-10-12 10:47:52 · 176 阅读 · 0 评论 -
C#文件的输入与输出
C# 文件的输入与输出一个 文件 是一个存储在磁盘中带有指定名称和目录路径的数据集合。当打开文件进行读写时,它变成一个 流。从根本上说,流是通过通信路径传递的字节序列。有两个主要的流:输入流 和 输出流。输入流用于从文件读取数据(读操作),输出流用于向文件写入数据(写操作)。C# I/O 类System.IO 命名空间有各种不同的类,用于执行各种文件转载 2017-10-12 10:46:06 · 556 阅读 · 0 评论 -
C#异常处理
异常是在程序执行期间出现的问题。C# 中的异常是对程序运行时出现的特殊情况的一种响应,比如尝试除以零。异常提供了一种把程序控制权从某个部分转移到另一个部分的方式。C# 异常处理时建立在四个关键词之上的:try、catch、finally 和 throw。try:一个 try 块标识了一个将被激活的特定的异常的代码块。后跟一个或多个 catch 块。catch:程序通过异常处转载 2017-10-12 10:43:58 · 312 阅读 · 0 评论 -
C#预处理指令
C# 预处理器指令预处理器指令指导编译器在实际编译开始之前对信息进行预处理。所有的预处理器指令都是以 # 开始。且在一行上,只有空白字符可以出现在预处理器指令之前。预处理器指令不是语句,所以它们不以分号(;)结束。C# 编译器没有一个单独的预处理器,但是,指令被处理时就像是有一个单独的预处理器一样。在 C# 中,预处理器指令用于在条件编译中起作用。与 C 和 C++ 不转载 2017-10-12 10:41:25 · 267 阅读 · 1 评论 -
C# 命名空间 (Namespace)
C# 命名空间(Namespace)命名空间的设计目的是提供一种让一组名称与其他名称分隔开的方式。在一个命名空间中声明的类的名称与另一个命名空间中声明的相同的类的名称不冲突。定义命名空间命名空间的定义是以关键字 namespace 开始,后跟命名空间的名称,如下所示:[csharp] view plain copyna转载 2017-10-12 10:38:50 · 834 阅读 · 0 评论 -
C#多态
在面向对象编程范式中,多态性往往表现为"一个接口,多个功能"。多态性可以是静态的或动态的。在静态多态性中,函数的响应是在编译时发生的。在动态多态性中,函数的响应是在运行时发生的。静态多态性在编译时,函数和对象的连接机制被称为早期绑定,也被称为静态绑定。C# 提供了两种技术来实现静态多态性。分别为:(1)函数重载(2)运算符重载转载 2017-10-12 10:36:33 · 189 阅读 · 0 评论 -
C# 事件
C# 事件(Event)事件(Event) 基本上说是一个用户操作,如按键、点击、鼠标移动等等,或者是一些出现,如系统生成的通知。应用程序需要在事件发生时响应事件。例如,中断。事件是用于进程间通信。通过事件使用委托事件在类中声明且生成,且通过使用同一个类或其他类中的委托与事件处理程序关联。包含事件的类用于发布事件。这被称为发布器(publisher) 类。其他接受该转载 2017-10-12 10:50:59 · 273 阅读 · 0 评论 -
C# 集合
C# 集合(Collection)集合(Collection)类是专门用于数据存储和检索的类。这些类提供了对栈(stack)、队列(queue)、列表(list)和哈希表(hash table)的支持。大多数集合类实现了相同的接口。集合(Collection)类服务于不同的目的,如为元素动态分配内存,基于索引访问列表项等等。这些类创建 Object 类的对象的集合。在 C# 中转载 2017-10-12 10:52:29 · 348 阅读 · 1 评论 -
C# 泛型
C# 泛型(Generic)泛型(Generic) 允许您延迟编写类或方法中的编程元素的数据类型的规范,直到实际在程序中使用它的时候。换句话说,泛型允许您编写一个可以与任何数据类型一起工作的类或方法。C#的泛型类似于C++的模板,您可以通过数据类型的替代参数编写类或方法的规范。当编译器遇到类的构造函数或方法的函数调用时,它会生成代码来处理指定的数据类型。下面这个简单的实例将有助转载 2017-10-12 10:53:38 · 200 阅读 · 0 评论 -
观察者模式
观察者模式当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。介绍意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协转载 2018-02-02 15:44:27 · 161 阅读 · 0 评论 -
Lambda表达式
定义:"Lambda表达式"是一个匿名函数,是一种高效的类似于函数式编程的表达式好处:Lambda简化了匿名委托的使用,减少开发中需要编写的代码量。具体内容:它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型,支持带有可绑定到委托或表达式树的输入参数的内联表达式。写法:所有Lambda表达式都使用Lambda运算符=>,该运算符读作"goes to"。Lambda转载 2018-01-25 11:27:27 · 183 阅读 · 0 评论 -
.NET 内存基础(通过内存体验类型、传参、及装箱拆箱)
一、内存分配的几个区域1、线程栈局部变量的值类型 和 局部变量中引用类型的指针(或称引用)会被分配到该区域上(引用类型的一部分内存被分配到该区域内)。该区域由系统管控,不受垃圾收集器的控制。当所在方法执行完毕后,局部变量会自动释放(引用类型只释放指针,而不释放指针指向的数据)。堆栈的执行效率很高,但容量有限。2、GC Heap(回收堆)用于分配小转载 2018-01-23 10:42:00 · 169 阅读 · 0 评论 -
C#反射(Reflection)
C# 反射(Reflection)反射指程序可以访问、检测和修改它本身状态或行为的一种能力。程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。优缺点优点:1、反射提高了程序的灵活性和转载 2017-10-12 11:12:51 · 328 阅读 · 0 评论 -
C# 特性(Attribute)
C# 特性(Attribute)特性(Attribute)是用于在运行时传递程序中各种元素(比如类、方法、结构、枚举、组件等)的行为信息的声明性标签。您可以通过使用特性向程序添加声明性信息。一个声明性标签是通过放置在它所应用的元素前面的方括号([ ])来描述的。特性(Attribute)用于添加元数据,如编译器指令和注释、描述、方法、类等其他信息。.Net 框架提供了两种类型的转载 2017-10-12 11:11:04 · 337 阅读 · 0 评论 -
C#匿名方法
C# 匿名方法我们已经提到过,委托是用于引用与其具有相同标签的方法。换句话说,您可以使用委托对象调用可由委托引用的方法。匿名方法(Anonymous methods) 提供了一种传递代码块作为委托参数的技术。匿名方法是没有名称只有主体的方法。在匿名方法中您不需要指定返回类型,它是从方法主体内的 return 语句推断的。编写匿名方法的语法匿名方法是通转载 2017-10-12 11:09:53 · 243 阅读 · 0 评论 -
C#多线程
C# 多线程线程 被定义为程序的执行路径。每个线程都定义了一个独特的控制流。如果您的应用程序涉及到复杂的和耗时的操作,那么设置不同的线程执行路径往往是有益的,每个线程执行特定的工作。线程是轻量级进程。一个使用线程的常见实例是现代操作系统中并行编程的实现。使用线程节省了 CPU 周期的浪费,同时提高了应用程序的效率。到目前为止我们编写的程序是一个单线程作为应用程序的运行实转载 2017-10-12 11:08:21 · 531 阅读 · 0 评论 -
C# 索引器
C# 索引器(Indexer)索引器(Indexer) 允许一个对象可以像数组一样被索引。当您为类定义一个索引器时,该类的行为就会像一个 虚拟数组(virtual array) 一样。您可以使用数组访问运算符([ ])来访问该类的实例。语法一维索引器的语法如下:[csharp] view plain copye转载 2017-10-12 10:58:18 · 219 阅读 · 0 评论 -
C# 类的继承和Interface接口
对象类是对一种事物的抽象,对象是类的实例。构成类的方法和变量成为类的成员。类的定义是以关键字 class 开始,后跟类的名称。类的主体,包含在一对花括号内。类的默认访问标识符是 internal,成员的默认访问标识符是 private。C# 类的静态成员我们可以使用 static 关键字把类成员定义为静态的。当我们声明一个类成员为静态时,意味着无论有多少个类的对象被转载 2017-10-12 10:34:15 · 2284 阅读 · 0 评论 -
C# 枚举
C# 枚举(Enum)枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。C# 枚举是值数据类型。换句话说,枚举包含自己的值,且不能继承或传递继承。声明 enum 变量声明枚举的一般语法:enum { enumeration list };其中,enum_name 指定枚举的类型名称。enumeratio转载 2017-10-12 10:32:43 · 171 阅读 · 0 评论 -
C#标识符关键字
标识符标识符是用来识别类、变量、函数或任何其它用户定义的项目。在 C# 中,类的命名必须遵循如下基本规则:标识符必须以字母、下划线或 @ 开头,后面可以跟一系列的字母、数字( 0 - 9 )、下划线( _ )、@。标识符中的第一个字符不能是数字。标识符必须不包含任何嵌入的空格或符号,比如 ? - +! # % ^ & * ( ) [ ] { } . ; : " ' /转载 2017-10-12 10:29:45 · 504 阅读 · 0 评论 -
C#事件(event)解析
事件(event),这个词儿对于初学者来说,往往总是显得有些神秘,不易弄懂。而这些东西却往往又是编程中常用且非常重要的东西。大家都知道windows消息处理机制的重要,其实C#事件就是基于windows消息处理机制的,只是封装的更好,让开发者无须知道底层的消息处理机制,就可以开发出强大的基于事件的应用程序来。先来看看事件编程有哪些好处。在以往我们编写这类程序中,往往采用等待机制,为了等待某件转载 2017-07-25 11:37:38 · 241 阅读 · 0 评论 -
多线程ManualResetEvent和AutoResetEvent
初次体验 ManualResetEvent和AutoResetEvent主要负责多线程编程中的线程同步;以下一段是引述网上和MSDN的解析: 在.Net多线程编程中,AutoResetEvent和ManualResetEvent这两个类经常用到, 他们的用法很类似,但也有区别。Set方法将信号置为发送状态,Reset方法将信号置为不发送状态,WaitOne等待信号的发送。可以通过构造函数的转载 2017-07-25 10:12:53 · 206 阅读 · 0 评论 -
C#项目中操作Excel文件 使用NPOI库
实际C#项目中经常会涉及到需要对本地Excel文件进行操作,特别是一些包含数据记录、分析、汇总功能模块的项目。常用的操作Excel文件的方法主要有三个:1. OleDb:这种方式是把整个Excel文件当做一个数据源来进行数据的读取操作。优点:实现方式简单,读取速度快;缺点:读取Excel数据的过程不太灵活,对内存的占用比较高,当数据量变的很大时,容易由于转载 2017-07-19 15:20:35 · 1004 阅读 · 0 评论 -
c#中的关键字
关键字是对编译器具有特殊意义的预定义保留标识符。它们不能在程序中用作标识符,除非它们有一个 @ 前缀。例如,@if是有效的标识符,但 if不是,因为 if是关键字。 下面是列出的所有的关键字在 C# 程序的任何部分都是保留标识符:abstract asbaseboolbreakbyte转载 2017-07-31 14:33:50 · 443 阅读 · 0 评论 -
C#常用控件属性及方法介绍
目录1、窗体(Form)2、Label (标签)控件3、TextBox(文本框)控件4、RichTextBox控件5、NumericUpDown控件6、Button(按钮)控件7、GroupBox(分组框)控件8、RadioButton(单选按钮)控件9、CheckBox(复选框)控件10、ListBox(列表框)控件11、ComboBox(组合框)控件转载 2017-07-31 14:02:46 · 337 阅读 · 0 评论 -
C#中流写入类StreamWriter的介绍
应用FileStream类需要许多额外的数据类型转换工作,十分影响效率。使用StreamWriter类将提供更简单,更方便的操作方式。 StreamWriter类允许直接将字符和字符串写入文件,一般不针对二进制数据。类的结构:public class StreamWriter:TextWriter :实现一个TextWriter,使其以一种特定的编码向流中写入字符。 StreamW转载 2017-07-21 16:15:16 · 5778 阅读 · 1 评论 -
c#学习笔记之文件操作
FileStream常用的属性和方法: 属性: CanRead 判断当前流是否支持读取,返回bool值,True表示可以读取 CanWrite 判断当前流是否支持写入,返回bool值,True表示可以写入 方法: Read() 从流中读取数据,返回字节数组 Write() 将字节块(字节数组)写入该流 Seek() 设置文件读取或写入的起始位置 Fl转载 2017-07-26 10:59:23 · 210 阅读 · 0 评论 -
C#虚基类继承与接口的区别
类 定义新的数据类型以及这些新的数据类型进行相互操作的方法 定义方式: class Cat{}class Cat:object{}C#中所有的类都是默认由object类派生来的,显示指定或者省略效果是一样的,所以上面的两个例子是完全相同的。C#中类包括:抽象类、密封类、非抽象类abstract:表示修饰的类不完整,也就是抽象类,只能用做基类。 在使用是不能直转载 2017-07-27 19:56:49 · 783 阅读 · 0 评论 -
C#可空类型
C# 可空类型(Nullable)C# 提供了一个特殊的数据类型,nullable 类型(可空类型),可空类型可以表示其基础值类型正常范围内的值,再加上一个 null 值。例如,Nullable,读作"可空的 Int32",可以被赋值为 -2,147,483,648 到 2,147,483,647 之间的任意值,也可以被赋值为 null 值。类似的,Nullable 变量可以被赋值转载 2017-10-12 10:28:03 · 165 阅读 · 0 评论 -
C#结构体
C# 结构(Struct)在 C# 中,结构是值类型数据结构。它使得一个单一变量可以存储各种数据类型的相关数据。struct 关键字用于创建结构。结构是用来代表一个记录。定义结构为了定义一个结构,您必须使用 struct 语句。struct 语句为程序定义了一个带有多个成员的新的数据类型。例如,您可以按照如下的方式声明 Book 结构:转载 2017-10-12 10:25:23 · 169 阅读 · 0 评论 -
C#字符串
C#字符串在 C# 中,您可以使用字符数组来表示字符串,但是,更常见的做法是使用 string 关键字来声明一个字符串变量。string 关键字是 System.String 类的别名。创建 String 对象您可以使用以下方法之一来创建 string 对象:通过给 String 变量指定一个字符串通过使用 String 类构造函数通过使用字符串串联运算符( +转载 2017-10-12 10:24:22 · 384 阅读 · 0 评论 -
C#数组
数组是一个存储相同类型元素的固定大小的顺序集合。数组是用来存储数据的集合,通常认为数组是一个同一类型变量的集合。所有的数组都是由连续的内存位置组成的。声明数组在 C# 中声明一个数组,您可以使用下面的语法:datatype[] arrayName;例如:double[] balance;初始化数组声明一个数组不会在内存中初始化数组。当初始化数组变转载 2017-10-12 10:22:51 · 469 阅读 · 0 评论 -
C#类型转换
C# 类型转换方法类型转换从根本上说是把数据从一种类型转换为另一种类型。在 C# 中,类型转换有两种形式:隐式类型转换 - 这些转换是 C# 默认的以安全方式进行的转换, 不会导致数据丢失。例如,从小的整数类型转换为大的整数类型,从派生类转换为基类。显式类型转换 - 显式类型转换,即强制类型转换。显式转换需要强制转换运算符,而且强制转换会造成数据丢失。转换类型的转载 2017-10-12 10:19:41 · 381 阅读 · 0 评论 -
C#参数传递
参数传递当调用带有参数的方法时,您需要向方法传递参数。在 C# 中,有三种向方法传递参数的方式:方式描述值参数这种方式复制参数的实际值给函数的形式参数,实参和形参使用的是两个不同内存中的值。在这种情况下,当形参的值发生改变时,不会影响实参的值,从而保证了实参数据的安全。引用参数这种方式复制参数的内存位置的引用给形式转载 2017-10-12 10:17:08 · 440 阅读 · 0 评论 -
C#数据类型
在 C# 中,变量分为以下几种类型:值类型(Value types)引用类型(Reference types)指针类型(Pointer types)值类型(Value types)值类型变量可以直接分配给一个值。它们是从类 System.ValueType 中派生的。值类型直接包含数据。比如 int、char、float,它们分别存储数字、字母、浮点转载 2017-10-12 10:14:32 · 171 阅读 · 0 评论 -
VS 2012 C#快捷键
ctrl + J 重现智能提示ctrl + L 删除一行ctrl + K ctrl + C 注释选中行ctrl +K ctrl +U 取消注释ctrl +K ctrl +F 格式化ctlr + k ctrl + M 快速生成方法ctlr + k ctrl + Xctlr + k转载 2017-07-18 10:12:50 · 535 阅读 · 0 评论