IL可以指Intermediate Language,同MSIL(Microsoft Intermediate Language),是将.NET代码转化为机器语言的一个中间语言的缩写
IL是.NET框架中中间语言(Intermediate Language)的缩写。使用.NET框架提供的编译器可以直接将源程序编译为.exe或.dll文件,但此时编译出来的程序代码并不是CPU能直接执行的机器代码,而是一种中间语言IL(Intermediate Language)的代码
结构和类的区别
类储存在堆上heap 结构储存在栈上stack(结构不支持继承) 语法上非常相似 唯一的区别就是strauct 代替class
数据成员
class phoneCustomer
{
public const string Daysendingbill="mongday";
public string Customerid;
public string FisterName;
public string LasterName;
}
const是一个c语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性
定义了这个成员就可以让如果申明为public就可以外部访问
phoneCustomer phoneclass=new phoneCustoer();
phoneclass.FisterName="213123";
弱引用
在一个应用程序中如果有个类myclass() ,并且声明一个雷 myclass=new myclass()那么这个类就会存到内存中。如果这个类比较大 但是用得比较少呢。
解决程序中为了节约内存资源。就用弱引用
部分类
prital 将写在不同文件,同一个类在不同地方进行合并
GetHashCode() 对象放在为映射的数据字典中就可以用这个方法
GetType() 提供对象成员的所有类的基本信息,类,成员,属性,方法。还提供反射入口方法
扩展方法
如果有类的源代码,用继承就是给对象添加功能的好方法。但是没有源代码怎么?用扩展方法,他允许改变一个类,但不需要该类的源码
虚方法
class allpeopple
{
public virtual string getname()
{
return name
}
}
在任何类中写虚方法都可以在派生类中对该方法用orrivied重写该方法
隐藏方法
如果在派生类和基类中没有使用virtual虚函数和重写overried方法 那么基类的方法就被称为隐藏方法
Abstract方法(抽象方法)
abstract关键字只能用在抽象类中修饰方法,并且没有具体的实现。抽象方法的实现必须在派生类中使用override关键字来实现。
public abstract void getPrice(); //抽象方法,不含主体
public override void getPrice() //实现抽象方法,必须实现
{
Console.WriteLine("this is a test:JavaBook override abstract getPrice()");
}
构造函数运行顺序---先初始化object类中的构造函数 在初始化派生类中的构造函数。
public公用,所有的都能访问
internal,仅在项目类公用,其他项目引用后找不到interal的方法,只能在本类中访问 不能被其他的类访问
sealed 修饰符可以应用于类、实例方法和属性。密封类不能被继承。密封方法会重写基类中的方法,但其本身不能在任何派生类中进一步重写。当应用于方法或属性时,sealed 修饰符必须始终与 override(C# 参考) 一起使用。
在类声明中使用 sealed 修饰符可防止继承此类
// cs_sealed_keyword.cs using System; sealed class SealedClass { public int x; public int y; } class MainClass { static void Main() { SealedClass sc = new SealedClass(); sc.x = 110; sc.y = 150; Console.WriteLine("x = {0}, y = {1}", sc.x, sc.y); } }