net基础知识点(一)

1、索引器
public string this[index]{
get{
// todo:
}
set{
//todo
}
}
2、密封类和静态类以及扩展方法
密封类:关键字seal 不能有子类
静态方法:关键字static 不能new,无法创建子类 只能声明static成员
扩展方法:在静态类中,写一个静态方法,对于参数所属类型扩展此方法
实例:
public static person
{
//红色表示即给定string一个扩展方法
public static bool Isman(this string name){
if(Hasjj(name))
{
return true;
}else
{
return false;
}
}
}

3、深拷贝和浅拷贝
其实就是一种现象,主要是看内存中的对象,比较简单,自行理解.
浅拷贝:同用内存
深拷贝:不同用内存

4、结构体
结构体和类很像,但是不能继承
struct person
{
public string name{get;set;}
public float age{get;set;}
}

类似于深拷贝,克隆之后,对原有的进行修改,不会影响当前的信息。

5、CTS、CLS和CLR
CTS(common type system)通用数据类型
CLS (common language specifiction) 通用语言规范
CLR (common language runtime) 公共语言运行时,提供垃圾回收GC(garbage collection)、JIT(即时编译器)
值类型是放在栈内存中,引用类型放在堆内存中,栈内存会在方法结束时自动释放,堆内存需要GC来回收。

6、拆箱和装箱
其他类型到object类型,装箱
object到其他类型,拆箱(拆箱时需要强制转换,只能用装箱时的类型强转)

7、等于
基本的object.referenceEquals(p1,p2),是判断是否是同个对象
对于常见的类型,重写了object的==

8、字符串缓冲池
如果在缓冲池中有相同的对象,直接重用,而不是重新创建,当然这是对于内容一致,且长度不变的

9、ref和out
普通参数(值类型传递拷贝,引用类型传递引用),在函数内部不能修改外部变量的指向,如果需要修改,则需要使用ret和out
ref 在传入函数时需要提前进行初始化,out不需要在函数外进行初始化,或者说初始化也没有用。
out适用于多个返回值的情形

原文地址:https://www.cnblogs.com/sailing92/p/13621612.html