我正在看一些代碼,我有點困惑。這個類不是一個接口,但爲什麼這些方法沒有定義?另外,牀邊方法簽名,還有一個固定的屬性。很混亂!常規類只能包含方法簽名(如接口)嗎?
public class MyClass
{
public string Foo(string str1);
public string Bar(string str, int i);
public string myProperty { get; set; }
}
感謝您的幫助
我正在看一些代碼,我有點困惑。這個類不是一個接口,但爲什麼這些方法沒有定義?另外,牀邊方法簽名,還有一個固定的屬性。很混亂!常規類只能包含方法簽名(如接口)嗎?
public class MyClass
{
public string Foo(string str1);
public string Bar(string str, int i);
public string myProperty { get; set; }
}
感謝您的幫助
不,這是無效的,如圖所示,並且您可以通過嘗試編譯它來證明儘可能多。對於包含未實現方法的類,它必須聲明爲abstract
,對於每個未實現的方法也是如此。
abstract
類在概念上類似於接口,但它們也可能包含實現。這使得它們適用於某些方法可能會在繼承層次結構中共享一個通用實現的情況,但其他方法只有在通過後代類型實現時纔有意義。
方法標記爲extern
或partial
也可以缺少身體,但extern
方法通常互操作(故在本機代碼實現),以及partial
方法將在另一個.cs
文件實現(可在僅聲明類標記爲partial
)。
順便說一下,屬性很好,因爲它是自動的(語法糖,這意味着將爲您創建後臺字段,並且get/set方法僅僅返回/設置該字段,僅此而已)。
如果我標記了ABSTRACT類,我從不打擾問。既然,他沒有,我以爲我錯過了一些東西。那麼,你是否讓我放心,那裏有一個錯誤? – Richard77 2012-07-18 20:35:44
@ Richard77:是的,該代碼不能編譯(自己試一下,應該只需要幾秒鐘)。我沒有根據代碼示例假設您對抽象/部分類的知識。 – 2012-07-18 20:44:30
也許它們是抽象的?在這種情況下,程序員期望你創建你自己的子類。 – KingCronus 2012-07-18 20:25:05
當你試圖編譯它時發生了什麼? – 2012-07-18 20:33:48