2017-02-22 4 views
-1

Ich verwende Methoden in C#. Ich habe etwas zurückgegeben, aber der Compiler druckt nicht, was ich erwarte. Es wird gedruckt (system.string []). Ich weiß nicht warum. Bitte helfen Sie mir dabei. Compiler ist seltsam Wert in C#

class Program 
{ 
    static void Main(string[] args) 
    { 
     string[] sub = subjects(); 
     Console.WriteLine(sub); 
    } 
    public static string[] subjects() 
    { 
     Console.WriteLine("Please Enter How many Subject Do you Want to input"); 
     int limit = System.Convert.ToInt32(Console.ReadLine()); 
     string[] Subjects = new string[limit]; 
     for (int i = 0; i < limit; i++) 
     { 
      Console.WriteLine("Please Enter Subject Name " + i); 
      Subjects[i] = Console.ReadLine(); 
     } 
     return Subjects; 

    } 
} 
+0

Du siehst wirklich „was die Variable ist“, nicht ihr Inhalt. –

Antwort

2
Console.WriteLine(sub) 

zeigen pflegen Sie etwas von Wert (es gibt den Untertyp), da Sie keinen Wert des Subarray Referenzierung werden, z sub[0]. Versuchen Sie folgendes:

foreach (string s in sub) 
{ 
    Console.WriteLine(s); 
} 
-1
Console.WriteLine(String.Join(", ", sub)); 
+7

Komm schon, 30k + und du legst nur eine Codezeile ab? –

+0

Sieht wie eine knappe Antwort auf das Problem aus. Daran ist nichts falsch. Überprüfst du alle Antworten von Jon Skeet, um ihn zu beschuldigen, wenn er eine kurze Antwort anbietet? – duffymo

+4

@duffymo Ein bisschen Erklärung darüber, warum das OP sieht, dass system.string [] 'gedruckt wird, würde nicht schief gehen, ist alles was ich sage. –

4

Der Grund, dass Programm ist system.string[] Druck ist, weil Klasse string[] nicht override ToString method der Fall ist, so wird the default one verwendet und die Standard-ToString gibt Typname, nicht den „Wert“ innerhalb Typ.

Sie zum Beispiel String.Join Methode verwenden, um eine Zeichenfolge aus Array von Strings zu bauen und zu bestimmten Trennzeichen zwischen den einzelnen String setzen:

Console.WriteLine(String.Join(", ", sub));