2014-06-17 2 views
0

J'ai récemment commencé à apprendre C# .NET et j'ai utilisé Visual Studios 2005 comme IDE. J'ai copié ce code directement hors du manuel et il me donne l'erreur ci-dessous. La sortie que je suis supposé recevoir est: Veuillez entrer un argument numérique: 1 Pourtant, j'obtiens cette erreur: Puisque ConsoleApplication1.Program.Main (string []) 'renvoie void, un mot-clé return ne doit pas être suivi d'une expression d'objetDébutant Erreur C# .NET: Si les arguments n'ont pas de longueur, pourquoi mon livre l'écrit-il comme tel?

using System; 
using System.Collections.Generic; 
using System.Text; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      if(args.Length == 0) 
      { 
       Console.WriteLine("Please enter a numeric argument: "); 
       return 1; 
      } 
     } 
    } 
} 
+0

À quelle version de Visual Studio/C# le livre est-il destiné? D'ailleurs, quel livre était-ce? –

+2

Oui, et même un débutant devrait essayer de lire le message d'erreur. Il est assez clair qu'il n'a rien à voir avec "args" mais avec le mot-clé return. Il le dit bien dans le message d'erreur. Prenez soin de le lire, s'il vous plaît. – TomTom

+0

Il s'agit de votre plan visuel pour la création d'applications .NET par Eric Butow et Tommy Ryan. – user3748214

Répondre

4

Vous renvoyez une valeur à une méthode dont le type de retour est VOID.

Comme indiqué dans le site officiel http://msdn.microsoft.com/en-us/library/yah0tteb.aspx: -

When used as the return type for a method, void specifies that the method doesn't return a value.

Faites votre méthode comme ci-dessous

static int Main(string[] args) 
{ 
    ////Your code 
    return 1; 
} 
5

Ceci est parce que vous aviez Main marqué comme void. Cela signifie que vous attendez seulement que vous appeliez return. Si vous voulez retourner un code de sortie, comme dans votre exemple, vous devez changer votre méthode Main pour retourner un int:

using System; 
using System.Collections.Generic; 
using System.Text; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     // Make this int instead of void 
     static int Main(string[] args) 
     { 
      if(args.Length == 0) 
      { 
       Console.WriteLine("Please enter a numeric argument: "); 
       return 1; 
      } 

      // Default return value 
      return 0; 
     } 
    } 
} 
+0

Cela ne sera pas compilé car tous les chemins de code ne renvoient pas de valeur. Une déclaration de retour doit également être ajoutée en dehors de l'instruction if. – Kyle

+0

@Kyle - Tu as raison et j'ai raté ça dans ma hâte de poster! :-) J'ai ajouté la valeur de retour par défaut. – Belogix

1

Si vous voulez juste pour afficher le message et ne rien faire d'autre alors il devrait être:

using System; 
using System.Collections.Generic; 
using System.Text; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      if(args.Length == 0) 
      { 
       Console.WriteLine("Please enter a numeric argument: "); 
       return; 
      } 
     } 
    } 
} 

Enlever "1" après le retour.

+0

Pas vrai. Il vous manque la valeur de retour du code d'erreur maintenant. –

+0

Son vide d'où il ne veut aucune valeur passée donc vous venez de revenir avec n'importe quelle valeur. – Yagzii

+0

Habituellement, le retour de -1 indique une erreur. Beaucoup utilisé dans les anciens scripts batch. –

2

Commentaires pour ce livre peut être trouvé à http://www.amazon.com/visual-blueprint-building-applications-Software/dp/076453601X; il a une note moyenne de 1,9 sur 5 et les commentaires suivants:

I thought it was a beginner book, maybe the pics are but the code [is bad]. Doesn't explain any of the examples very well. Not a very good book.

et

Wow!!! This book is really badly written.

Malheureusement, le code cité est un autre exemple. Une méthode void est celle qui ne renvoie pas une valeur, donc d'avoir défini main comme void puis renvoyé une valeur est complètement incorrecte.

Je recommanderais de recycler votre livre actuel dans un ensemble de briquets, puis d'acheter un livre décent pour le remplacer.

+2

+1 pour avoir consulté les critiques de livres! –

Questions connexes