我有一些麻煩,爲我的課界面。我嘗試了一個簡單的公共無效,並工作。但我無法讓它與下面的代碼中的公共靜態空白一起工作。我認爲這與枚舉方法中的參數有關。但我如何解決這個問題?從接口類
這是類:
這是我的接口:
我有一些麻煩,爲我的課界面。我嘗試了一個簡單的公共無效,並工作。但我無法讓它與下面的代碼中的公共靜態空白一起工作。我認爲這與枚舉方法中的參數有關。但我如何解決這個問題?從接口類
這是類:
這是我的接口:
接口是合同。他們爲合同中的所有方法指定方法簽名。
在你的界面,您可以:
void FFT(/*stuff*/)
然而,在您的實現,您已經定義
static void FFT(/*stuff*/)
現在,爲什麼我們不能用靜態的?從Joel Spoelsky
由於接口是一個「合同」或消費者(主叫方)之間的協議和提供者(被叫)。一個接口描述了calle將提供什麼功能和如何提供功能。沒有必要由第三方提供靜態成員。靜態成員不能被提供者覆蓋,因此它們不屬於接口。
http://discuss.joelonsoftware.com/default.asp?dotnet.12.305680.12 –
@viveknuna這不是我所鏈接的嗎? – Dudemanword
接口是調用者和被調用者之間的契約。靜態成員屬於類而不是對象,所以它的靜態方法沒有意義。
爲了解釋爲什麼這樣做沒什麼意義,創建接口的原因是您可以傳遞類的對象作爲接口類型的引用,所以消費者不需要知道哪個底層鍵入對象。例如,您可以將IEnumerable<Foo>
傳遞給一個不需要知道或關心這個數組或列表或哈希集等的方法,它只需要一個Foos序列。
靜態方法不與一個實例關聯,因此沒有可引用的對象。在C#中沒有可以用來引用類而不是對象的靜態接口的概念。
如果您有其他想要交換使用的類,可以擺脫靜態並創建這些單例。
請始終在您的問題中使用文字,而不是圖片。 –
接口的實現方法不能是靜態的。這是一條規則。 – Jonesopolis
如果我不能使用接口,我該如何使用這些方法? – Skupaj