我們創建了一個接口iii,它只有一個名為pqr的函數。然後,類yyy實現了接口iii,但是沒有實現函 數pqr,而是添加了一個名為abc的函數。在入口點函數vijay中,函數pqr會被接口iii調用。
我們 之所以沒有得到任何錯誤,是因為override指令的存在。這個指令通知編譯器重定向對接口iii的函數pqr 以及對類yyy的函數abc的任何調用。編譯器對override指令是非常嚴格的。可以從這樣的事實中對此進行 考量——如果在類yyy的定義中沒有實現iii,那麼我們就會得到下列異常:
Output
Exception occurred: System.TypeLoadException: Class yyy trIEd to override method pqr but does not implement or inherit that methods.
at zzz.vijay()
析構函數
a.cs
class zzz
{
public static void Main()
{
}
~zzz()
{
System.Console.WriteLine("hi");
}
}
a.il
.assembly mukhi {}
.class private auto ansi zzz extends [mscorlib]System.Object
{
.method public hidebysig static void vijay() il managed
{
.entrypoint
ret
}
.method family hidebysig virtual instance void Finalize() il managed
{
ldstr "hi"
call void [mscorlib]System.Console::WriteLine(class System.String)
ldarg.0
call instance void [mscorlib]System.Object::Finalize()
ret
}
}
No output