[英]Derived class - extending properties
我仍在學習和對抗派生類。
嘗試了一些簡單的方法(從我看到的所有示例中):
public class BaseClass
{
public string Title {get;set;}
}
public class Channel : BaseClass
{
public string Path { get; set; }
}
Channel myChannel = new Channel();
myChannel.Title = "hello";
myChannel.Path = "123";
但是我在myChannel.Path
行上收到一條錯誤消息,說BaseClass does not contain a definition for Path and no extension....
請幫助我,我做錯了什么?
您顯示的示例很好。 我認為您的實際代碼中有:
BaseClass myChannel = new Channel();
myChannel.Title = "hello";
myChannel.Path = "123";
答案很簡單:確保您的局部變量的類型為Channel
,因為表達式類型 (通常是變量的類型)決定了成員解析的起點。
作為C#3中的簡潔替代方案:
var myChannel = new Channel { Title = "hello", Path = "123" };
您提供的代碼可以很好地編譯。 我懷疑您實際上有這樣的代碼:
BaseClass myChannel = new Channel();
myChannel.Title = "hello";
myChannel.Path = "123";
請注意,這里的myChannel
的編譯時類型為BaseClass
,因此編譯器將無法找到Path
屬性,因為該屬性在BaseClass
不存在。 編譯器只能根據變量的編譯時類型查找成員。 (不考慮動態鍵入...)
如果您堅持實際發布的代碼,即使用Channel
的編譯時類型,那么一切都很好。
編寫的代碼運行良好。 我懷疑你有
BaseClass myChannel = new Channel()
如果是這樣,則問題在於myChannel是對BaseClass的引用,並且看不到Path屬性。
如果您需要訪問路徑,可以使用
(myChannel as Channel).Path = "123";
hth,
艾倫
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.