⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 override.il

📁 < Microsoft .NET IL汇编语言程序设计>>书上的源程序
💻 IL
字号:
.assembly extern mscorlib { }
.assembly virt_not { }
.module virt_not.exe

.class public A
{
	.method public specialname void .ctor() { ret }
	.method public void Foo()
	{
		ldstr "A::Foo"
		call void [mscorlib]System.Console::WriteLine(string)
		ret
	}
	.method public virtual void Bar()
	{
		ldstr "A::Bar"
		call void [mscorlib]System.Console::WriteLine(string)
		ret
	}
	.method public virtual void Baz()
	{
		ldstr "A::Baz"
		call void [mscorlib]System.Console::WriteLine(string)
		ret
	}

}

.class public B extends A
{
	.method public specialname void .ctor() { ret }
	.method public void Foo()
	{
		ldstr "B::Foo"
		call void [mscorlib]System.Console::WriteLine(string)
		ret
	}
	.method public virtual void BarBaz()
	{
		.override A::Bar
		.override A::Baz
		ldstr "B::BarBaz"
		call void [mscorlib]System.Console::WriteLine(string)
		ret
	}
}

.class public C extends B
{
	.method public specialname void .ctor() { ret }
	// no overrides, let's inherit everything from B
}


.method public static void Exec()
{
	.entrypoint
	newobj instance void B::.ctor()	// create instance of derived class
	castclass class A		// cast it to base class

	dup				// we need 3 instance pointers
	dup				// on stack for 3 calls

	call instance void A::Foo()
	callvirt instance void A::Bar()
	callvirt instance void A::Baz()

	//-------------------------------------------------------------------
	
	newobj instance void C::.ctor() // create instance of derived class
	castclass class A			  // cast it to "grandparent"

	dup					  // we need 3 instance pointers
	dup					  // on stack for 3 calls

	call instance void A::Foo()
	callvirt instance void A::Bar()
	callvirt instance void A::Baz()
	ret


	ret
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -