|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
中间码是基于一个虚拟机器。源代码是最高层的,理论上从源代码开始直接编译成本地码能提供最大优化的。而中间码只能是转译成本地码,效率上难免受到损耗。根据虚拟机器所设定的体系结构的特点,和本地机器的差异的多少。在C#中,is是用来判别范例A可否转化为范例B,一样平常用来作有承继干系的父类与子类是不是能够互相转化的判别。
而as是将范例A转化为范例B,一样平常也是用来做子类与父类的转换。
以下面的例子,我们声明三个类
classA
{}
classB:A
{}
classC
{}
能够看到,类B是由类A承继来的。而C是一个自力的类。上面我们使用is与as来做测试。
classProgram
{
publicstaticvoidMain()
{
Bb=newB();
if(bisA)
{
Console.WriteLine(true);
}
else
{
Console.WriteLine(false);
}
}
}
打印的了局为true,申明b类能够转换为A类,但b类并没有转化为A类。
再看上面的例子:
classProgram
{
publicstaticvoidMain()
{
Bb=newB();
Aa=basA;
if(a!=null)
{
Console.WriteLine(true);
}
else
{
Console.WriteLine(false);
}
}
}
打印了局为true,这也申明b类能够转换为A类,并且已将类b转化为了A范例。
注重:既使b类不成以转换为A类,利用is做判别的时分,是能够经由过程编译的,也不会抛出非常,只是会给出提醒。而利用as是会报错的,即通不外编译。也许C#刚上市的时候有些抄袭Java吧,但自从C#2.0上市之后,整个局面就扭转乾坤了,不但Java在模仿C#,而且他从来都没能跟得上C#的脚步。 |
|