C#
csdn_chai
这个作者很懒,什么都没留下…
展开
-
【C#学习】标识符
标识符是用来识别类、变量、函数或任何其它用户定义的项目。在 C# 中,类的命名必须遵循如下基本规则:标识符必须以字母、下划线或 @ 开头,后面可以跟一系列的字母、数字( 0 - 9 )、下划线( _ )、@。标识符中的第一个字符不能是数字。标识符必须不包含任何嵌入的空格或符号,比如 ? - +! # % ^ & * ( ) [ ] { } . ; : " ' / \。标识符原创 2017-08-21 07:13:01 · 711 阅读 · 0 评论 -
【C#学习】.NET类库中的继承
.NET类库继承示意图原创 2017-08-21 18:27:58 · 550 阅读 · 0 评论 -
【C#学习】静态字段、常量字段、只读字段、只读属性的相同点和不同点
声明方式静态字段 public static int a = 10; 常量字段 public const int a = 10; 只读字段 public readonly int a = 10; 也可以在构造函数中初始化值只读属性 public int A {get{return a;}} 访问方式静态字段、常量字段都只能用类名访问,不能用对象访问。常量字段默认也是静态的原创 2017-08-21 18:04:29 · 1571 阅读 · 0 评论 -
【C#学习】可空类型
C#可空类型在程序开发中,有时候需要值类型也为可空类型,比如,在数据库中,我们可以把一个日期Datetime设置为null。在C# 2.0中就出现了可空类型,允许值类型也可以为空(null),可空类型的实现基于C#泛型。可空类型基本知识可空类型的核心是System.Nullable,同时静态类System.Nullable为可空类型提供了很多实用的方法。下面分别转载 2017-08-24 19:07:13 · 1090 阅读 · 1 评论 -
【C#学习】sizeof 关键字
C# sizeof原创 2017-08-24 19:12:18 · 342 阅读 · 0 评论 -
【C#学习】class 和 struct 对比
C#中转载 2017-08-24 18:59:00 · 251 阅读 · 0 评论 -
【C#学习】ref 和 out
首先:两者都是按地址传递的,使用后都将改变原来参数的数值。针对值类型来说才有价值,因为引用类型本来就是传引用进去的。其次:ref可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空,所以你必须初始化一次。这个就是两个的区别,或者说就像有的网友说的,ref是有进有出,out是只出不进。ref(C# 参考)转载 2017-08-24 18:48:18 · 187 阅读 · 0 评论 -
C# 协程
协程是一种轻量级线程原创 2017-08-24 09:31:26 · 2385 阅读 · 4 评论 -
C#关键字快速回想
面向对象abstract virtual override new const sealedclass struct public protectedinternal private 委托delegateevent原创 2017-08-24 07:46:21 · 209 阅读 · 0 评论 -
【C#学习】继承和多态
C# 不支持多重继承,一个类只能有一个直接基类。本文意在巩固基础知识,并不是对其进行深入剖析,如若对各位高手没有什么作用,请绕过。本文为原创文,所有示例均是博主测试过的,欢迎大家批评指正,如有转载请标明出处,谢谢。继承、封装和多态是面向对象编程的重要特性。其成员被继承的类叫基类也称父类,继承其成员的类叫派生类也称子类。派生类隐式获得基类的除构造函数和析构函数以外的所有成原创 2017-08-21 18:54:53 · 555 阅读 · 0 评论 -
【C#学习】接口 Interface
接口和抽象类原创 2017-08-21 22:18:28 · 382 阅读 · 0 评论 -
C# GC 垃圾回收
C#原创 2017-08-24 18:59:31 · 422 阅读 · 0 评论 -
【C#学习】yield关键字
yield是C#为了简化遍历操作实现的语法糖,我们知道如果要要某个类型支持遍历就必须要实现系统接口IEnumerable,这个接口后续实现比较繁琐要写一大堆代码才能支持真正的遍历功能。举例说明using System;using System.Collections.Generic;using System.Collections;using System.Linq;u转载 2017-08-24 19:51:42 · 524 阅读 · 0 评论 -
C# 面试题
参考:http://blog.csdn.net/tonnychu/article/details/508884521. 请简述值类型与引用类型的区别2.C# 中所有引用类型的基类是什么3. 请简述 ArrayList 和 List 的主要区别4. 请简述 GC (垃圾回收)产生的原因,并描述如何避免?5. 请描述 Interface 与抽象类之间的不同原创 2017-08-25 06:19:25 · 289 阅读 · 0 评论 -
【C#学习】匿名方法
C# 匿名方法通过关键字 delegate 实现。委托是用于引用与其具有相同标签的方法。换句话说,您可以使用委托对象调用可由委托引用的方法。匿名方法(Anonymous methods) 提供了一种传递代码块作为委托参数的技术。匿名方法是没有名称只有主体的方法。在匿名方法中您不需要指定返回类型,它是从方法主体内的 return 语句推断的。编写匿名方法的转载 2017-08-24 19:47:51 · 178 阅读 · 0 评论 -
【C#学习】异常处理
官方文档:https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/exceptions/C# 异常处理和C++很像,也是 try, catch , final。C# 语言的异常处理功能有助于处理在程序运行期间发生的任何意外或异常情况。 异常处理功能使用 try、catch 和 finally 关键字来尝试执行可能失败的操原创 2017-08-22 14:47:34 · 481 阅读 · 0 评论 -
【C#练习】基础知识订正
switch 语句后的exp可以是整数类型(包含字符和枚举),和字符串类型。每一个分支都必须有一个break; 和C++不同。C# 多维数组 int[, ] a = new int[2, 3] , 获得元素的时候得用 a[1, 2] 而不是C++的方式。C# 的foreach循环,如 foreach(int i in x); 要求不能再循环体中改变 i 的值,即不能改变集合 x 的值,只要一个类原创 2017-08-22 11:56:08 · 223 阅读 · 0 评论 -
【C#学习】公共语言运行库 CLR
应用程序被编译两次,第一次生成MSIL,MSIL在运行时被CLR快速编译。CLR为.NET通过如下方面的功能或者服务: 无用存储单元收集 GC代码验证和类型安全代码访问安全原创 2017-08-22 11:32:22 · 331 阅读 · 0 评论 -
【C#学习】delegate(委托) 和 event(事件)
在C#中delegate(委托)是一种特殊的引用类型,它将方法也作为特殊的对象封装起来,从而将方法作为变量或者参数传递。使用一个委托有三个步骤: 定义委托实例化委托将指定的方法添加到委托对象中例子: delegate int plus(int x, int y); // 1. 定义委托 static void Main(string[] ar原创 2017-08-20 15:48:12 · 759 阅读 · 0 评论 -
【C#学习】数据类型
在 C# 中,变量分为以下几种类型:值类型(Value types)引用类型(Reference types)指针类型(Pointer types)值类型值类型变量可以直接分配给一个值。它们是从类 System.ValueType 中派生的。值类型直接包含数据。比如 int、char、float,它们分别存储数字、字母、浮点数。当您声明一个 int 类型原创 2017-08-21 07:17:38 · 206 阅读 · 0 评论 -
【C#学习 - 进阶】Attribute (特性)
特性(Attribute)是用于在运行时传递程序中各种元素(比如类、方法、结构、枚举、组件等)的行为信息的声明性标签。您可以通过使用特性向程序添加声明性信息。一个声明性标签是通过放置在它所应用的元素前面的方括号([ ])来描述的。原创 2017-08-21 09:31:43 · 193 阅读 · 0 评论 -
【C#学习】数组
前言C# 中,数组是一种聚合类型,表示具有相同类型的一组对象的集合。数组是一种引用类型,在作为函数参数传递时,为按引用传递。语法一维数组要创建一个数组对象,需要依据以下语法 [] = new [];要初始化时,依次使用下标对数组元素赋值:[] = ; 也可以在定义时初始化。以下三种方法等价: int原创 2017-08-21 13:12:31 · 330 阅读 · 0 评论 -
【C#学习】运算符重载
C# 中,重载运算符的函数必须声明为公有的public 和静态的 static :public static C#中允许被重载的运算符一元运算符:+、-、!、~、++、--、true 和 false二进制运算符:+, -, *, /, %, &, |, ^, >比较运算符:==, !=, , =不能重载的运算符:&&, || 条件逻辑运算符不能重载,但原创 2017-08-21 17:35:53 · 285 阅读 · 0 评论 -
面向对象五大原则和三个基本特征
单一职责原则(Single-Resposibility Principle):一个类,最好只做一件事,只有一个引起它的变化。单一职责原则可以看做是低耦合、高内聚在面向对象原则上的引申,将职责定义为引起变化的原因,以提高内聚性来减少引起变化的原因。 开放封闭原则(Open-Closed principle):软件实体应该是可扩展的,而不可修改的。也就是,对扩展开放,对修改封闭的。 Liskov替换原原创 2017-08-22 08:57:58 · 308 阅读 · 0 评论 -
【C#学习】Assembly (程序集)的概念
C# 代码文件编译后生成的程序模块叫做Assembly(程序集)。程序集是.NET应用程序的基本单元,一个软件可以是一个程序集,但更多时候是程序集组成的集合。程序集可以是exe可执行文件,也可以是dll动态链接库文件。动态链接库中没有 Main 方法。原创 2017-08-21 12:37:05 · 2848 阅读 · 0 评论 -
【C#学习】C#版本时间轴
2005年 C# 2.0 增加泛型编程。2008年 C# 3.0 增加Lambda表达式,隐式类型,扩展方法等特性2010年 C# 4.0 可选参数和命名参数,元组(tuple)类型,动态绑定,逆变和协变当前C#为4.5版本,提供了增强的异步操作和国际化支持。原创 2017-08-21 11:04:51 · 2822 阅读 · 0 评论 -
【C#学习】lambda表达式
C# 中 Lambda表达式作为一种内联函数使用,可以将一个Lambda表达式赋给一个委托(C# 3.0+)。"Lambda表达式"是一个特殊的匿名函数,是一种高效的类似于函数式编程的表达式,Lambda简化了开发中需要编写的代码量。它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型,支持带有可绑定到委托或表达式树的输入参数的内联表达式。所有Lambda表达式都使用Lambda运算符=>原创 2017-08-20 15:07:59 · 283 阅读 · 0 评论 -
【C#学习】关键字
关键字是 C# 编译器预定义的保留字。这些关键字不能用作标识符,但是,如果您想使用这些关键字作为标识符,可以在关键字前面加上 @ 字符作为前缀。在 C# 中,有些标识符在代码的上下文中有特殊的意义,如 get 和 set,这些被称为上下文关键字(contextual keywords)。下表列出了 C# 中的保留关键字(Reserved Keywords)和上下文关键字(Conte原创 2017-08-21 07:16:03 · 280 阅读 · 0 评论 -
【C#学习 - 进阶】泛型(Generic)
C#支持泛型编程。原创 2017-08-22 06:51:05 · 312 阅读 · 0 评论 -
【C#学习】Reflection 反射
反射指程序可以访问、检测和修改它本身状态或行为的一种能力。转载 2017-08-21 10:43:20 · 223 阅读 · 0 评论 -
【C#学习】索引函数
C# 提供了索引函数机制来提供快速、可读性强的读写方式。索引函数的语法是: public this[ ]{// get 和 set 至少有一个get { // get 访问函数的定义} set { // set 访问函数的定义} }例子,如果有一个类型是 Person , 而 Person 的字段有姓名,年龄,联系方式,而且它们都是以 string原创 2017-08-21 17:22:35 · 1521 阅读 · 0 评论 -
【C#学习】属性/属性访问函数
为了实现对数据的良好封装,C#为类提供了属性访问函数(简称属性,Property)。属性用于控制对字段的访问。属性包含 set 访问函数和 get 访问函数,分别用于写字段和读字段。 class A { private string name; // 被控制字段 public string Name原创 2017-08-21 16:49:22 · 1593 阅读 · 0 评论 -
【C#学习】构造函数和析构函数
前言C#中,构造函数和析构函数与C++的表现很不一样,从调用时机、修饰符等方面都有区别。C#中,构造函数可以由 public、private等修饰,而析构函数则不能有访问限制修饰符。构造函数和析构函数都没有返回值,析构函数没有参数。一个类只能有一个析构函数。而对于 struct, C#不允许程序员显示提供默认构造函数,编译器始终会提供一个默认构造函数,程序员只能定义带参数的构造函数。构造函原创 2017-08-21 16:18:12 · 435 阅读 · 0 评论 -
【C#学习】运算符
C# 提供了许多运算符,这些运算符是指定要在表达式中执行哪些操作(数学、索引、函数调用等等)的符号。 可以重载许多应用于用户定义类型的运算符,从而更改其含义。对整数类型执行的运算(如 ==、!=、、>、&、|)通常也可对枚举 (enum) 类型执行。以下章节按最高优先级到最低优先级的顺序列示 C# 运算符。 各章节内运算符的优先级相同。主要运算符以下是具有最高优先级原创 2017-08-21 15:00:40 · 222 阅读 · 0 评论 -
【C#学习】类型转换
类型转换从根本上说是类型铸造,或者说是把数据从一种类型转换为另一种类型。在 C# 中,类型铸造有两种形式:隐式类型转换 - 这些转换是 C# 默认的以安全方式进行的转换, 不会导致数据丢失。例如,从小的整数类型转换为大的整数类型,从派生类转换为基类。显式类型转换 - 显式类型转换,即强制类型转换。显式转换需要强制转换运算符,而且强制转换会造成数据丢失。原创 2017-08-21 07:35:59 · 374 阅读 · 0 评论 -
【C#学习】访问限制修饰符
C#有四个成员访问限制修饰符private 用于成员访问限制public 用于成员和类的访问限制。用于类时,表示允许外部程序集使用该类protected 用于成员访问限制internal 用于成员和类的访问限制。表示不允许外部程序集使用该类或访问该成员,但是允许本程序集使用该类或访问该成员原创 2017-08-21 16:05:52 · 740 阅读 · 0 评论 -
【C#学习 - 进阶】C#集合 Collection
C# 集合有点像C++的STL容器,提供了一些常用的数据结构,二叉树、堆、栈等等。集合(Collection)类是专门用于数据存储和检索的类。这些类提供了对栈(stack)、队列(queue)、列表(list)和哈希表(hash table)的支持。大多数集合类实现了相同的接口。集合(Collection)类服务于不同的目的,如为元素动态分配内存,基于索引访问列表项等等。这转载 2017-08-24 19:46:36 · 265 阅读 · 0 评论 -
【C#学习】枚举
C# 中,所有枚举都是 System.Enum 类的实例,System.Enum不可以被派生。但是这个类有一些静态方法,可以用来发现有关枚举实例中操作值的信息。默认情况下,枚举中每个元素的基础类型都为 int。 可以使用冒号指定另一种整数类型: enum Days: byte { None = 0x0, Sunday = 0x1,转载 2017-08-24 16:02:03 · 250 阅读 · 0 评论 -
Unity3D 协程与线程
1 线程、进程、协程的区别进程拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程由操作系统调度。线程拥有自己独立的栈和共享的堆,共享堆,不共享栈,线程亦由操作系统调度(标准线程是的)。协程和线程一样共享堆,不共享栈,协程由程序员在协程的代码里显示调度。协程不是线程,不是异步执行的。2. 什么是协程协同程序绝对不是一个线程。这意味着在同一时间只有一个协同程序在转载 2017-08-25 06:52:32 · 810 阅读 · 0 评论