아래 코드는 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에서 액세스 수정자를 제거하는 것을 잊지 마십시오.
답변
