下面的代码在C#中,我使用的是Visual Studio 2010.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
namespace FrontEnd
{
class Flow
{
long i;
private int x,y;
public int X
{
get;set;
}
public int Y
{
get;set;
}
private void Flow()
{
X = x;
Y = y;
}
public void NaturalNumbers(int x, int y)
{
for (i = 0; i < 9999; i++)
{
Console.WriteLine(i);
}
MessageBox.Show("done");
}
}
}
当我编译上面的代码时,我收到此错误:
错误:'Flow':成员名称不能与其封闭类型相同
为什么呢?我该如何解决这个问题?
答案 0 :(得分:109)
与类名相同的方法名称称为构造函数。构造函数没有返回类型。所以正确如下:
private Flow()
{
X = x;
Y = y;
}
或者将该功能重命名为:
private void DoFlow()
{
X = x;
Y = y;
}
虽然整个代码对我没有任何意义。
答案 1 :(得分:23)
问题在于方法:
private void Flow()
{
X = x;
Y = y;
}
您的类名为Flow
,因此此方法也不能命名为Flow
。您必须将Flow
方法的名称更改为其他名称才能使此代码编译。
或者你的意思是创建一个私有构造函数来初始化你的类?如果是这种情况,则必须删除void
关键字,以便编译器知道您声明了构造函数。
答案 2 :(得分:5)
构造函数不返回类型,只需删除在您的情况下为void的返回类型。它会好起来的。
答案 3 :(得分:3)
只是删除它,因为构造函数没有像void这样的返回类型 它会是这样的:
private Flow()
{
X = x;
Y = y;
}
答案 4 :(得分:2)
构造函数不应该有返回类型。 在每个构造函数之前删除void。
构造函数的一些非常基本的特性:
一个。与班级相同的名称 湾没有返回类型。 C。每次用类创建一个对象时都会调用它。例如,如果你制作两个Flow对象,你的程序中, Flow flow1 = new Flow(); Flow flow2 = new Flow(); 然后将调用Flow构造函数2次。
d。如果你想只调用一次构造函数,那么将它声明为static(静态构造函数),并且不要忘记从静态构造函数中删除任何访问修饰符。
答案 5 :(得分:2)
由于构造函数应该在类的开头,因此您将遇到上述问题。因此,您可以更改名称,或者如果要将其用作构造函数,只需在类的开头复制该方法即可。