2016-04-28 33 views
-3

Ich versuche myCar.FormatMe() aufzurufen, aber es wird nicht angezeigt. Ich weiß nicht warum. Irgendwelche Vorschläge?Kann eine Methode aus einer anderen Klasse nicht aufrufen

using System; 
namespace SimpleClasses 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Car myCar = new Car(); 
      myCar.Make = "BMW";  
      myCar.FormatMe(); 
      Console.ReadLine(); 
     } 
    } 

    class Car 
    { 
     public string Make { get; set; } 
     public string FormatMe() 
     { 
      return string.Format("Make: {0}", this.Make); 
     } 

    } 
} 

Vielen Dank.

Antwort

11

Es gibt keine Ausgabe in Ihrem Code

class Program 
{ 
    static void Main(string[] args) 
    { 
     Car myCar = new Car(); 
     myCar.Make = "BMW";  
     Console.WriteLine(myCar.FormatMe()); 
    } 
} 

class Car 
{ 
    public string Make { get; set; } 
    public string FormatMe() 
    { 
     return string.Format("Make: {0}", this.Make); 
    } 

} 
+1

Oh, einfach. Ich fühle mich sehr albern. – Hanaka

+0

@Hanaka können Sie eine der hier geposteten Antworten akzeptieren, um sie als beantwortet zu markieren! : 0 – techspider

1

Entweder wickeln Sie Ihren Funktionsaufruf in einem Aufruf von Console.WriteLine() oder haben FormatMe() das gleiche tun.

Was Sie mit Ihrem Funktionsaufruf tun, ist einfach eine Zeichenkette zurückzugeben, aber nichts damit zu tun, wie es einer Variablen zuzuordnen oder sie einer anderen Funktion als Parameter zu übergeben. Daher "tut es nichts", weil Sie nichts damit getan haben.

4

Verwaiste Strings und statt zu schreiben

Sie kehren eine Zeichenfolge aus Ihrer FormatMe() Funktion aber nicht wirklich etwas zu tun mit dem Lesen:

myCar.FormatMe(); // This will return your value, but it isn't being stored 

Zusätzlich fordern Sie die Console.ReadLine() Methode, die tatsächlich die Eingabe von der Benutzer im Gegensatz zu der Ausgabe an den Benutzer erwartet.

// This will store the results from your FormatMe() method in output 
var output = myCar.FormatMe(); 
// This will write the returned string to the Console 
Console.WriteLine(output); 
// You can now read it here 
Console.ReadLine(); 

oder:

Store Ihre Variable und schreiben It Out

Betrachten Sie es in einer Variablen zu speichern oder direkt als Parameter an die Console.WriteLine() Methode übergeben werden als Ausgabe gesendet

// Write the output from your FormatMe() method to the Console 
Console.WriteLine(myCar.FormatMe()); 
// Now you should be able to read it 
Console.ReadLine(); 

Beispiel

Sie können see an interactive example of this in action here und sein Ausgang unten gezeigt:

enter image description here

1

Sie den Wert von FormatMe() bekommen sollte oder einfach ausdrucken:

static void Main(string[] args) 
{ 
    Car myCar = new Car(); 
    myCar.Make = "BMW";   
    Console.ReadLine(myCar.FormatMe()); 
} 
0

Es tut uns wenig zu spät; und ich bin mir nicht sicher über die Akzeptanz dieser Art von Antworten; Bitte vergib mir, wenn es nicht der richtige Weg ist.

Sehen wir uns das Problem anhand eines Beispiels an. Sie fragen etwas (here it is a formatted string) nach einer benannten Person (hier ist es car). und die Frage ist, gib mir einen formatierten Stich (FormatMe()). bis jetzt ist alles in Ordnung.

Was kommt als nächstes? Wenn alles in Ordnung ist (bedeutet, es gibt keine Probleme in der Funktion), um Ihnen die formatierte Zeichenfolge zu geben, wird Ihnen die Person das Ergebnis geben. Auch das ist in Ihrem Fall in Ordnung (die Funktion hat den formatierten String perfekt zurückgegeben).

Was müssen Sie zu diesem Zeitpunkt tun? Sie müssen das Produkt von der jeweiligen Person abholen. Leider haben Sie vergessen, sie zu sammeln, aber Sie versuchen, es an eine andere Person zu liefern. Das passiert in deinem Fall.

Was also zu tun? Sie müssen das Produkt, die formatierte Zeichenfolge, sammeln, bevor Sie es an die Konsole senden. das heißt:

string formattedString =myCar.FormatMe(); // collecting formatted string 
Console.WriteLine(formattedString); // delivering it to the console 

Oder Sie können sie auf dem Weg zu der Konsole wie folgt sammeln:

Console.WriteLine(myCar.FormatMe()); // delivering it to the console 
+1

Sie können nicht mit ReadLine auf Konsole ausgeben – techspider

+0

@techspider: Sie Vorschlag hilft mir, meine Antwort zu verbessern Vielen Dank. Sehen Sie sich die Updates an –

Verwandte Themen