2017-04-03 51 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-指针。

相关问题