87

下面的代码在 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");
        }
    }
}

当我编译上面的代码时,我得到了这个错误:

错误:“流程”:成员名称不能与其封闭类型相同

为什么?我该如何解决这个问题?

4

6 回答 6

131

与类名相同的方法名称为构造函数。构造函数没有返回类型。如此正确:

private Flow()
{
   X = x;
   Y = y;
}

或将函数重命名为:

private void DoFlow()
{
   X = x;
   Y = y;
}

尽管整个代码对我来说没有任何意义。

于 2012-04-09T08:28:32.990 回答
28

问题出在方法上:

private void Flow()
{
    X = x;
    Y = y;
}

您的类已命名Flow,因此此方法也不能命名Flow。您必须将Flow方法的名称更改为其他名称才能编译此代码。

还是您的意思是创建一个私有构造函数来初始化您的类?如果是这种情况,您将不得不删除void关键字以让编译器知道您声明了构造函数。

于 2012-04-09T08:29:14.333 回答
6

构造函数不返回 type ,只需删除在您的情况下为 void 的返回类型。那时它会运行良好。

于 2015-05-07T18:53:17.717 回答
4

由于 Constructor 应该在 Class 的开头,因此您面临上述问题。因此,您可以更改名称,或者如果您想将其用作构造函数,只需复制类开头的方法即可。

于 2017-01-22T11:13:49.177 回答
3

只需删除它,因为构造函数没有像 void 这样的返回类型,它将是这样的:

private Flow()
    {
        X = x;
        Y = y;
    }  
于 2014-11-04T20:43:06.713 回答
2

构造函数不应该有返回类型。在每个构造函数之前删除 void 。

构造函数的一些非常基本的特征:

一种。与 b 类同名。没有返回类型。C。每次使用该类创建对象时都会调用。例如,在你的程序中,如果你制作了两个 Flow 对象,Flow flow1=new Flow(); 流流 2=新流();然后 Flow 构造函数将被调用 2 次。

d。如果您只想调用一次构造函数,则将其声明为静态(静态构造函数)并且不要忘记从静态构造函数中删除任何访问修饰符..

于 2013-09-20T11:15:20.740 回答