Подтвердить что ты не робот

Имена членов не могут быть такими же, как и их закрывающий тип С#

Код ниже приведен в С#, и я использую 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");
        }
    }
}

Когда я компилирую вышеуказанный код, я получаю эту ошибку:

Ошибка: "Поток": имена участников не могут быть такими же, как и их закрывающий тип

Почему? Как я могу это решить?

4b9b3361

Ответ 1

Имена методов, которые совпадают с именем класса, называются конструкторами. Конструкторы не имеют возвращаемого типа. Так правильно, как:

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

Или переименуйте функцию как:

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

Хотя весь код не имеет никакого смысла для меня.

Ответ 2

Проблема заключается в методе:

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

Ваш класс имеет имя Flow, поэтому этот метод нельзя также назвать Flow. Вам нужно будет изменить имя метода Flow на что-то еще, чтобы скомпилировать этот код.

Или вы хотели создать частный конструктор для инициализации своего класса? В этом случае вам придется удалить ключевое слово void, чтобы компилятор знал, что вы объявляете конструктор.

Ответ 3

Конструкторы не возвращают тип, просто удалите возвращаемый тип, который недействителен в вашем случае. Тогда это будет нормально.

Ответ 4

просто удалите это, потому что у конструктора нет возвращаемого типа, такого как void это будет следующим:

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

Ответ 5

Конструктор не должен иметь тип возврата. удалите void перед каждым конструктором.

Некоторая очень основная характеристика конструктора:

а. То же имя, что и класс б. нет возврат type. с. будет вызываться каждый раз, когда объект создается с классом. например, в вашей программе, если вы создали два объекта Flow, Flow flow1 = new Flow(); Flow flow2 = new Flow();  то конструктор потока будет вызван в 2 раза.

д. Если вы хотите вызвать конструктор только один раз, то объявите это как статический (статический конструктор) и не забудьте удалить любой модификатор доступа из статического конструктора..

Ответ 6

Поскольку конструктор должен быть в начале класса, вы столкнулись с вышеупомянутой проблемой. Таким образом, вы можете либо изменить имя, либо если вы хотите использовать его в качестве конструктора, просто скопируйте метод в начале класса.

Ответ 7

Какая польза от X и Y в этом классе?