2009-09-12 8 views
0

Dans mon environnement de développement domestique, si je ne spécifie pas la variable de retour d'une méthode qui renvoie une valeur, il s'agit d'une erreur de compilation .Erreur de compilation lors du retour d'une méthode, mais pas d'un autre environnement de développement

Cependant, au travail (où je suppose que les paramètres Visual Studio peuvent différer), le code compilera toujours bien dans cette situation.

E.g.

string EditString(string s); 

Dans mon code, je peux écrire ce (au travail):

EditString("string here"); 

Comme vous pouvez le voir, je ne vous écris pas la chaîne de = EditString ("..."); Mais cela ne compilera pas à la maison.

De cette méthode, je dois écrire:

string s = EditString("abc"); 

Si je ne précise pas explicitement la variable de retour, quel effet cela at-il sur le compilateur? (Je suppose que le compilateur fera automatiquement l'assignation)? Où puis-je vérifier ce paramètre qui provoque une erreur si je ne reviens pas d'un appel de méthode?

Merci

+0

Le paramètre projet/solution "Afficher les avertissements en tant qu'erreurs" est peut-être activé. –

+0

Peut-être. Je vais devoir vérifier. – dotnetdev

Répondre

0

Peut-être avez-vous installé un plugin de studio visuel tel que FxCop ou Resharper qui vérifiera automatiquement votre code et vous aurez fixé un niveau trop élevé.

L'avertissement que vous obtenez peut être ignoré, je le désactiverais.

3

Je pense que vous pourriez être déroutant deux choses.

Vous peut écrire une méthode avec un type de retour, mais ignorer la valeur retournée:

static string EditString(string s) 
{ 
    return "abc"; 
} 

static void Main() 
{ 
    EditString("xyz"); // ok 
} 

Mais vous ne pouvez pas définir une méthode qui a un type de retour, mais ne retourne pas de valeur:

static string EditString(string s) // error: not all code paths return a value 
{ 
} 
+0

Exactement ce que je pensais. – JoshJordan

+0

+1 Je pense que vous l'avez cloué (rétracté réponse précédente) –

+0

ci-dessus je sais. Je pense que vous confondez ma question car je ne fais référence qu'aux appels de méthode et rien aux définitions (que je sais devoir retourner dans le corps si la signature renvoie un type).Voir ma modification dans mon premier message. – dotnetdev

1

Vous vous trompez sur la cause de votre erreur à la maison. Il ne créera pas d'avertissement ou une erreur. Cependant, vous avez peut-être essayé de faire quelque chose de similaire, mais avec une propriété ou un indexeur. Vous ne pouvez pas appeler une propriété sans utiliser le résultat - ce n'est pas une expression d'instruction en elle-même. En d'autres termes:

string[] x = ...; 
x.Length; // Invalid 
x[0]; // Invalid 
int y = x.Length; // Valid 
string z = x[0]; // Valid 

Si vous croyez encore vous voir avec méthodes à la maison, s'il vous plaît poster un exemple court mais complet. Si vous utilisez un compilateur C# fonctionnel, vous pouvez toujours ignorer la valeur de retour d'une méthode.

+0

Plus l'erreur. Cela peut être dû à des mises à jour dans mon outil de découpage et des outils similaires que j'utilise. J'obtiens une erreur au sujet de renvoyer une variable, mais seulement avec quelques méthodes de cadre et pas avec mes propres méthodes personnalisées. Et oui, votre exemple est beaucoup plus propre :) – dotnetdev

Questions connexes