C# CS0542-的原因;成员名称不能与其封闭类型“相同”;

C# CS0542-的原因;成员名称不能与其封闭类型“相同”;,c#,.net,C#,.net,我有此错误,但由于某些原因,我无法识别错误(CS0542): 成员名称不能与其封闭类型相同 代码: 字符串为nSuperTeamName的构造函数不应具有void。通过使void,您使其成为类的成员之一。您与该方法发生冲突,该方法的名称为类构造函数 试试这个例子 public SuperTeam() { SuperTeamName = ""; } public void SuperTeamMethod (string nSuperTeamName) { SuperTeamNam

我有此错误,但由于某些原因,我无法识别错误(CS0542):

成员名称不能与其封闭类型相同

代码:


字符串为
nSuperTeamName
的构造函数不应具有
void
。通过使
void
,您使其成为类的成员之一。

您与该方法发生冲突,该方法的名称为类构造函数
试试这个例子

public SuperTeam()
{
    SuperTeamName = "";
}

public void SuperTeamMethod (string nSuperTeamName)
{
    SuperTeamName = nSuperTeamName;
}

您的类是SuperTeam,它有一个名为SuperTeam的方法,该方法不是构造函数。我猜它应该是一个构造函数,在这种情况下,请删除
void
返回类型

public SuperTeam (string nSuperTeamName)
{
    SuperTeamName = nSuperTeamName;
}
如果它实际上应该是设置
SuperTeamName
的方法,那么更改函数的名称(
SetSuperTeamName
似乎合适),或者更好地将其更改为具有getter和setter的属性。

问题在于:

public void SuperTeam(string nSuperTeamName)
{
    SuperTeamName = nSuperTeamName;
}
我相信您希望类具有一个返回类型,并且由于构造函数不能具有返回类型,编译器将其视为一个方法。现在方法名与类名相同,这就是为什么会出现错误

  • 如果是构造函数,则删除
    void
    (返回类型)
  • 如果它是一个简单的方法,则将名称更改为除超级团队以外的其他名称

类或结构的成员不能与 类或结构,除非成员是构造函数

和(感谢)

如果您不小心将返回类型置于 构造函数,它实际上使它成为一个普通方法


我理解正确的第一和快速的第二,这就是我所做的:(这是真的,但它被编辑了1分钟ago@JulieShannon,我只是补充了阿列克谢指出的一些额外细节,在那之前也没问题:)@AlexeiLevenkov链接:)@AngeloB.,完全由你来判断答案是否可以接受,你之前把马特的答案标为正确答案,现在你把我的答案标为正确答案。如果你认为马特的答案是正确的,那么接受这个事实,不要担心投票数或任何评论。这是你的选择:)+1。请注意,CS0542的文章明确地介绍了这种情况:“如果您不小心在构造函数上放置了一个返回类型,这实际上使它成为一个普通方法,则可能会导致此错误……”AlexeiLevenkov,perfect addition,刚刚将此添加到了答案中。
public void SuperTeam(string nSuperTeamName)
{
    SuperTeamName = nSuperTeamName;
}