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

上記のコードをコンパイルすると、次のエラーが発生します。

エラー: 'Flow': メンバー名は、それを囲む型と同じにすることはできません

なんで?どうすればこれを解決できますか?

4

6 に答える 6

28

問題は次の方法にあります。

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

クラスに名前が付けられFlowているため、このメソッドにも名前を付けることはできませんFlowFlowこのコードをコンパイルするには、メソッドの名前を別の名前に変更する必要があります。

それとも、クラスを初期化するためのプライベートコンストラクターを作成するつもりでしたか?その場合は、voidキーワードを削除して、コンストラクターを宣言していることをコンパイラーに通知する必要があります。

于 2012-04-09T08:29:14.333 に答える
6

コンストラクターは type を返しません。あなたの場合は void である戻り値の型を削除するだけです。それならうまくいくだろう。

于 2015-05-07T18:53:17.717 に答える
3

コンストラクターには void のような戻り値の型がないため、これを削除してください。次のようになります。

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

コンストラクターには戻り値の型があってはなりません。各コンストラクターの前に void を削除します。

コンストラクターの非常に基本的な特性:

a. クラスbと同じ名前。ノーリターンタイプ。c. クラスでオブジェクトが作成されるたびに呼び出されます。たとえば、プログラムで Flow の 2 つのオブジェクトを作成した場合、Flow flow1=new Flow(); フロー flow2=new Flow(); その後、Flow コンストラクターが 2 回呼び出されます。

d. コンストラクターを一度だけ呼び出したい場合は、それを静的 (静的コンストラクター) として宣言し、静的コンストラクターからアクセス修飾子を削除することを忘れないでください。

于 2013-09-20T11:15:20.740 に答える