2017-04-03 55 views
0

所以,我遇到了一堆不同的錯誤,並且剛剛接觸C#,我不確定自己做錯了什麼。'a'不包含'b'的定義,也沒有擴展方法錯誤

我在我的ImportDefinitionData類中創建了一個新方法「方法A」,如下所示。它不喜歡我定義區域描述變量的方式。我得到一個「classa.field A」不能在靜態類錯誤中聲明實例成員。

然後,當我嘗試從另一個類中調用該方法時,我在方法名稱下面出現一條紅色的波浪線,錯誤狀態爲「Definitiondata不包含Phase1Additional參數的定義,也沒有接受類型的第一個參數的擴展方法定義數據可以發現。

+2

你把它放在ImportDefinitionData中,而不是DefinitionData ... –

+1

你的類是'ImportDefinitionData',但是你正在嘗試使用一些'DefinitionData'類。此外'this'在靜態方法內無效。 – Jonesopolis

+1

你不能在一個成員(例如方法)中擁有一個公共變量。將公共字符串AREA_DESCRIPTION;'-part移動到類體中,而不是在方法內部。 – HimBromBeere

回答

0

這是因爲以下

this.AREA_DESCRIPTION = string.Format(... 

的線,應該只是下面的,因爲它是一個本地參數

AREA_DESCRIPTION = string.Format(... 
1

確實存在一堆錯誤。

首先你不能在一個靜態成員中使用this(在你的情況下是靜態方法)。此外,您不能在另一個成員中定義成員(靜態或非成員),這是您不能在內使用public的一種方法。

所以要shortcome這種使用下列內容:

public static class ImportDefinitionData 
{ 
    public string AREA_DESCRIPTION; 

    public static DefinitionData Import(string DefinitionFile) 
    { 
     DefinitionData definitionData = XMLDefinitionFile.Read(DefinitionFile); 
     return definitionData; 
    } 

    public static void Phase1AdditionalParameters() 
    { 

     AREA_DESCRIPTION = string.Format("{0} {1}", AREA_NAME, AREA_TYPE); 
    } 
} 

不過我可不是搞不清從哪裏來AREA_NAMEAREA_TYPE,所以你可能在這裏期待着更多的錯誤。

無論如何,你應該明確地看看OOP的訪問修飾符和原則,特別是一個類的實例是什麼意思,以及如何使用this-指針。

相關問題