Вопрос по c# – имена членов не могут совпадать с их типом включения C #

66

Код ниже написан на C #, и я использую Visual Studio 2010.

<code>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");
        }
    }
}
</code>

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

Error: 'Flow': имена членов не могут совпадать с их типом включения

Зачем? Как я могу решить эту проблему?

Ваш Ответ

5   ответов
23

Проблема в методе:

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

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

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

106

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

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

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

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

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

Но где же (значения)x а такжеy родом из Henk Holterman
private переменные; Это не имеет смысла, хотя ... mshsayem
Обратите внимание, что эта ошибка также может произойти, если по ошибке ваше имя класса и имя xaml совпадают. Случилось со мной сегодня. NewBie1234
5

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

2

еред каждым конструктором.

Некоторая базовая характеристика конструктора:

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

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

3

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

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

Похожие вопросы