1. 問題初現
今天查看《介面繼承的宣告問題》回饋,發現 Ninputer 留下這道題:
如果有
class A : Interface1那麼
class B : A, Interface1和class B : A會出現什麼不同情況?編譯器在 IL 層級用什麼手段實現這功能?
2. 探索問題 & 理解問題
解決問題的過程是探索與推理論證過程。嘗試用反證法探索。首先假設 B 類別兩種繼承方式效果一樣,尋找不一樣。補全程式碼:
interface IC { }
class A : IC { }
class B1 : A { }
class B2 : A, IC { }
class Program
{
static void Main()
{
A a = new A();
B1 b1 = new B1();
B2 b2 = new B2();
Console.WriteLine(a is IC);
Console.WriteLine(b1 is A);
Console.WriteLine(b1 is IC);
Console.WriteLine(b2 is A);
Console.WriteLine(b2 is IC);
}
}
執行結果:
True
True
True
True
True