[c#] 멤버 이름은 둘러싸는 유형 C #과 같을 수 없습니다.

아래 코드는 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’: 멤버 이름은 엔 클로징 유형과 같을 수 없습니다.

왜? 어떻게 해결할 수 있습니까?



답변

클래스 이름과 동일한 메서드 이름을 생성자 라고 합니다. 생성자에는 반환 유형이 없습니다. 따라서 다음과 같이 정확합니다.

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

또는 함수의 이름을 다음과 같이 변경하십시오.

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

전체 코드가 나에게 의미가 없지만.


답변

문제는 방법에 있습니다.

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

클래스 이름이 지정 Flow되므로이 메서드의 이름도 지정할 수 없습니다 Flow. Flow이 코드를 컴파일 하려면 메서드 이름을 다른 이름으로 변경해야합니다 .

아니면 클래스를 초기화하기 위해 개인 생성자를 만들려고 했습니까? 이 경우 void생성자 선언을 컴파일러에 알리기 위해 키워드를 제거 해야합니다.


답변

생성자는 유형을 반환하지 않고 귀하의 경우에 무효 인 반환 유형을 제거하기 만하면됩니다. 그러면 잘 실행됩니다.


답변

생성자가 클래스의 시작 부분에 있어야하므로 위의 문제에 직면하게됩니다. 따라서 이름을 변경하거나 생성자로 사용하려면 클래스 시작 부분에 메서드를 복사하면됩니다.


답변

생성자는 void와 같은 반환 유형이 없기 때문에 이것을 제거하십시오.

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


답변

생성자에는 반환 유형이 없어야합니다. 각 생성자 앞에 void를 제거합니다.

생성자의 매우 기본적인 특성 :

ㅏ. 클래스 b와 같은 이름. 반환 유형이 없습니다. 씨. 클래스로 객체를 만들 때마다 호출됩니다. 예를 들어 프로그램에서 두 개의 Flow 객체를 만든 경우 Flow flow1 = new Flow (); 흐름 flow2 = new Flow (); 그런 다음 Flow 생성자가 2 번 호출됩니다.

디. 생성자를 한 번만 호출하려면이를 static (정적 생성자)으로 선언하고 static constructor에서 액세스 수정자를 제거하는 것을 잊지 마십시오.


답변