0
那麼其簡單的在這裏你有我的vb.net代碼:VB.net Overridable屬性不同於C#虛擬屬性?
Public Class Class1
Public Overridable ReadOnly Property Name() As String
Get
Return Nothing
End Get
End Property
End Class
Public Class Class2
Inherits Class1
Public Overloads ReadOnly Property Name() As String
Get
Return "Class2"
End Get
End Property
End Class
Module Module1
Sub Main()
Dim c2 As New Class2()
Console.WriteLine(c2.Name)
Dim c1 As Class1 = CType(c2, Class1)
Console.WriteLine(c1.Name)
End Sub
End Module
這裏來的C#代碼:
class Class1
{
public virtual string Name
{
get
{
return null;
}
}
}
class Class2 : Class1
{
public override string Name
{
get
{
return "Class2";
}
}
}
class Program
{
static void Main(string[] args)
{
Class2 c2 = new Class2();
Console.WriteLine(c2.Name);
Class1 c1 = (Class1)c2;
Console.WriteLine(c1.Name);
}
}
我沒有expekt他們做同樣的事情,但你猜怎麼着大公不! C#輸出
的Class2
的Class2
VB.NET輸出
的Class2
{沒什麼}
(它dosent打印無關它只是打印一個空行) 爲什麼vb.net在被覆蓋時用於基類實現?
VB.NET:覆蓋 – 2009-11-26 08:11:55
是的,它的覆蓋,重載是添加更多的參數。 – 2009-11-26 10:52:20
這顯然是正確的答案,但編譯器爲什麼不給出錯誤? – MarkJ 2009-11-26 12:10:42