2016-04-15 20 views
0
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
namespace half_test { 
    class Car { 
    private int printInfo; 
    public int PrintInfoMethod { 
     get { 
     return printInfo; 
     } 
     set { 
     printInfo=value; 
     } 
    } 
    public void Car() { 
     Console.WriteLine("<" + printInfo); 
    } 
    } 
    class Engine { 
    static void Main(string[] args) { 
     Engine blf=new Engine("BLF", 1597); 
     Engine bny=new Engine("BVY", 1984); 
     Engine blg=new Engine("BLG", 1389); 
     Car[] cars=new Car[4]; 
     cars[0]=new Car("GOLF E", blf); 
     cars[1]=new Car("GOLF E", blf); 
     cars[2]=new Car("GOLF E", blf); 
     cars[3]=new Car("GOLF E", blf); 
     foreach (Car car in cars) car.printInfo(); 
    } 
    } 
} 

このエラーポイント。なぜですか?エラー? 'Car'メンバー名は、その囲みタイプと同じであってはなりません。

なぜエラーが発生しますか?

私は上記のコードをコンパイルするとき、私はこのエラーを取得:

Error: 'Car': member names cannot be the same as their enclosing type

なぜ?どうすれば解決できますか?

このスクリーンショットを表示します。言語のルールだけだ enter image description here

+0

私は人生でC#の行を書いたことはありませんが、私は 'public void Car()'が 'public Car()'になるはずです。 – Biffen

+0

@Biffen:コンストラクタを意図している場合のみ。現時点で何が意図されているかは明確ではありません。 –

+0

@JonSkeet真実、私はちょうど名前に行っていた。 – Biffen

答えて

3

Why?

Carというクラスを作成する場合は、Carというメンバー(プロパティ、メソッド、フィールド、ネストされたタイプ、イベント)を含むことはできません。これが許されれば、は本当にになります。

How can I resolve this?

あなたのメソッドの名前を変更します。現時点ではCar()と呼ばれていますが、それは何をしているのか説明していません。それをPrintInfoと呼びますか?なぜのプロパティPrintInfoMethodと呼ばれているのか、またはあなたが示したコードに存在しないコンストラクタを呼び出す理由がわかりません。

Carに説明文を入力したい場合は、Descriptionという名前を付けてください。実際にその説明を印刷する方法が必要な場合は、適切な名前を付けてください。例:

class Car 
{ 
    public string Description { get; set; } 

    public void PrintDescription() 
    { 
     Console.WriteLine($"< {Description}"); 
    } 
} 
関連する問題