2016-04-15 5 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(); 
    } 
    } 
} 

dieser Fehlerpunkt.warum? Error? 'Car'member-Namen können nicht mit ihrem umgebenden Typ übereinstimmen

warum fehler?

Wenn ich den obigen Code zu kompilieren bekomme ich diesen Fehler:

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

Warum? Wie kann ich das beheben?

Ich möchte dieses screenshat sehen. enter image description here

+0

Ich habe nie eine Zeile von C# in meinem Leben geschrieben, aber ich vermute 'öffentliches ungültiges Auto()' sollte 'öffentliches Auto()' sein. – Biffen

+0

@Biffen: Nur wenn es ein Konstruktor sein soll. Es ist nicht wirklich klar, was es im Moment sein soll. –

+0

@JonSkeet Stimmt, ich wollte nur mit dem Namen gehen. – Biffen

Antwort

3

Why?

Das ist nur die Regeln der Sprache ist. Wenn Sie eine Klasse namens Car erstellen, darf sie keine Elemente (Eigenschaften, Methoden, Felder, verschachtelte Typen, Ereignisse) namens Car enthalten. Es wäre wirklich verwirrend, wenn dies erlaubt wäre, IMO.

How can I resolve this?

Durch Umbenennen Ihrer Methode. Im Moment heißt es Car(), was nicht beschreibt, was es tut. Wie wäre es mit dem Aufruf PrintInfo? Es ist nicht klar, warum Sie eine Eigenschaft haben genannt PrintInfoMethod entweder ... oder warum Sie Konstruktoren aufrufen, die nicht in dem Code vorhanden sind, den Sie angezeigt haben.

Wenn Sie möchten, dass eine Car eine Art von beschreibendem Text haben, würde ich das Description nennen, und wenn Sie wirklich eine Methode zum Drucken dieser Beschreibung wünschen, geben Sie einen geeigneten Namen. Beispiel:

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

    public void PrintDescription() 
    { 
     Console.WriteLine($"< {Description}"); 
    } 
} 
Verwandte Themen