coust 定义常量
string是密封类,所以不能继承它
namespace默认是按照文件夹的结构命名的,如(System.文件夹.子文件夹),而且namespace是可以手动改的
ArrayLists可以放进去所有类型的变量,可以把它看作动态数组
add
remove,removeAt
clear
list.Contains(); 判断元素是否存在
List<T>
HashSet<T> 只保留一份重复的数据
Dictionary<T,T>
Stopwatch类是秒表
Random 随机数
Path 路径处理
Combine(第一部分,第二部分) //合并路径,自动处理路径的斜杠
File
File.WriteAllText(路径,内容)//写入文件,如果文件不存在则创建,如果文件夹不存在则抛出异常
Directory
StringBuilder
Append(),AppendLine()
可空类型
在值类型名后加上个问号(?)可以声明可空类型的变量
int? i=null;
i.HasValue() 判断是否为null
FTP,HTTP处理
WebClient
FtpWebRequest
时间间隔
TimeSpan
声音处理
SoundPlayer
委托中的匿名方法
delegate()
{
//匿名方法
}
Lambda表达式
TestDelegate td = (s1,s2) => {
Console.WriteLine(s1+s2);
}
扩展方法
扩展静态类的方法,使字面量可以直接调用类似String类的ToLower(),ToUpper()方法
如:str.IsEmail()
无参扩展方法:自己写个静态类,在方法的第1个参数前加上this关键字
有参的扩展方法,第一个参数就是要调用的对象,以后的参数依次是扩展方法的参数
Linq
类型推断
var关键字声明变量,但和JS中不同,JS是弱类型的语言,可以为变量赋任何类型的值,
C#中一旦为变量赋了一种类型的值,就不能为其赋其余类型的值
匿名类型
var p = new { Name="Sky",Age=18 };
p是匿名类型的对象
LINQ的简便方法
from i in values
where i<0
orderby i descending
select i;//select在最后
//select new Person{Age=10;} 可以创建对象
GC.Collect(); //手动垃圾回收
WeakReference 弱引用,监视一个变量是否被回收
string 和 StringBulder的区别
StringBuilder不会产生大量的临时字符串
"abc"=="123" //判断值
object.RefernceEquals(s1,s2) //判断对象的引用是否相同
字符串拘留池,会重用字符串对象,
但每次new出一个字符串,就肯定是创建了一个新的对象
C#中使用指针
在项目的属性中选中"允许不安全的代码",并且在方法前要加上"unsefe"关键字才可以使用指针
运算符重载
public bool operator ==(Person p1,Person p2)
结构体是值类型
浅度复制和深度复制
ICloneable接口提供一个Clone()方法可以进行深度复制,但实现代码需要自己完成
new一个对象把各个属性都挨个复制
可以使用对象的MemberwiseClone()方法来进行浅度复制,
它返回一个Object对象,需要自己转换成所需 的类型
数字与字符串相加,以数字开头,就返回与第一个数字相连的和再与余下的字符串相加
,以字符串头,就以数字的ToString()相加
字符串与一个非字符串对象相加,得到的是它的ToString*(
sealed 作为类的修饰符是密封类,作为方法的修饰符,不允许子类override
Stream
File,FileInfo,Directory,DirectoryInfo
FileStream,GZipStream
StreamReader,StreamWriter
泛型委托,系统定义的委托Func<T>
泛型约束
//构造函数约束
function<T>() where T:new() //约束T必须有无参的构造函数
//继承约束
function<T>() where T:Base
default(T) 返回这个类型的默认值,如果是值类型就返回null
程序集
反射Assembly类
Type类是对类的更高级的抽象,所有类都是它的实例
//没有对象的时候通过类来获得类的描述
Type t=typeof(Person)
//GetType()获得对象的类的类型描述
asbls[0]
Type t2=dog.GetType();
Activator.CreateInstance(type); //创建type类的实例,要求必须有无参的构造函数
typeof(Class) 返回Class的Type描述
类的标记(Attribute)
[Serialize] 标记类为可序列化
[DisplayName("显示的类名")]