指示一个方法或存取器的实现可以在继承类中被覆盖
被修饰的Class不可被继承,例如String
静态方法,属于类,不属于实例,编译器在编译时会保留这个方法的实现,可以直接被调用
静态Class,仅包含静态成员,不能被实例化
引用命名空间
using别名
using aClass = NameSpace1.MyClass;
用于声明在外部实现的方法。调入非托管代码时与 DllImport 属性一起使用;在这种情况下,该方法还必须声明为 static
[DllImport("avifil32.dll")]
private static extern void AVIFileInit();
常量,不能修改.
编译时确定值【必须在申明的同时赋值】
不能使用static修饰,只能修饰值类型和string
只读,构造函数初始化,运行时确定,可以用static修饰(静态变量),也可以不用(实例变量)
修饰引用类型时引用本身不可以改变,但是引用说指向的实例的值是可以改变的。
public class Student
{
public readonly int Age = 20;
public Student(int age)
{
this.Age = age;
this.Age = 25;
this.Age = 30;
}
}
易变变量,多个线程同时访问一个变量,CLR为了效率,允许每个线程进行本地缓存,这就导致了变量的不一致性。volatile就是为了解决这个问题,volatile修饰的变量,不允许线程进行本地缓存,每个线程的读写都是直接操作在共享内存上,这就保证了变量多个线程始终具有一致性。
锁,多个线程同时访问一个代码块,使用lock 修饰该代码块,强制多个线程进行排队,一个接一个的去访问。缺点很明显:排队进行必然导致效率低。
分部Class
例如winform中代码和设计器用partial分成两个文件
原文:https://www.cnblogs.com/thomerson/p/11483311.html