.Net 【基础回顾】关键字
new
- 运算符:创建实例,调用构造函数
- 修饰符:显式隐藏从父类继承过来的成员
- 约束:泛型声明中约束可能用作类型参数的参数的类型,new约束指定泛型类声明中的任何类型参数都必须具有公共的无参数构造函数
virtual
指示一个方法或存取器的实现可以在继承类中被覆盖
- 在基类中定义了virtual方法,但在派生类中没有重写该虚方法。那么在对派生类实例的调用中,该虚方法使用的是基类定义的方法
- 在基类中定义了virtual方法,然后在派生类中使用override重写该方法。那么在对派生类实例的调用中,该虚方法使用的是派生重写
sealed
被修饰的Class不可被继承,例如String
static
-
静态方法,属于类,不属于实例,编译器在编译时会保留这个方法的实现,可以直接被调用
-
静态Class,仅包含静态成员,不能被实例化
using
-
引用命名空间
-
using别名
using aClass = NameSpace1.MyClass;
- 定义一个范围,在范围结束时dispose对象
extern
用于声明在外部实现的方法。调入非托管代码时与 DllImport 属性一起使用;在这种情况下,该方法还必须声明为 static
[DllImport("avifil32.dll")]
private static extern void AVIFileInit();
const
常量,不能修改.
编译时确定值【必须在申明的同时赋值】
不能使用static修饰,只能修饰值类型和string
readonly
只读,构造函数初始化,运行时确定,可以用static修饰(静态变量),也可以不用(实例变量)
修饰引用类型时引用本身不可以改变,但是引用说指向的实例的值是可以改变的。
public class Student
{
public readonly int Age = 20;
public Student(int age)
{
this.Age = age;
this.Age = 25;
this.Age = 30;
}
}
volatile
易变变量,多个线程同时访问一个变量,CLR为了效率,允许每个线程进行本地缓存,这就导致了变量的不一致性。volatile就是为了解决这个问题,volatile修饰的变量,不允许线程进行本地缓存,每个线程的读写都是直接操作在共享内存上,这就保证了变量多个线程始终具有一致性。
lock
锁,多个线程同时访问一个代码块,使用lock 修饰该代码块,强制多个线程进行排队,一个接一个的去访问。缺点很明显:排队进行必然导致效率低。
partial
分部Class
例如winform中代码和设计器用partial分成两个文件