Je suis à essayer de comprendre pourquoi le compilateur a un problème avec cette fonction. Il me donne le "Pas tous les chemins de code renvoie une valeur d'erreur", cependant je ne peux pas voir une situation où les flux de contrôle passerait à l' if( a )
expression sans a
être vrai (si l' if( a )
est superflu, mais le compilateur ne semble pas reconnaître que).
public static Boolean Foo(Boolean x)
{
Boolean a = false;
if( x )
{
a = true;
}
else
{
try
{
SomethingThatMightThrow();
Assert.IsFalse( a );
return a;
}
catch(Exception)
{
a = true;
}
}
if( a )
{
return x;
}
}
La solution immédiate est de tout simplement supprimer l' if( a )
garde déclaration complètement et juste return x
immédiatement - mais pourquoi ne le compilateur se plaindre, même si elle devrait être en mesure de prouver de manière statique tous les chemins de code possible de tirer une return
déclaration? Surtout, il n'y a pas de boucles, qui sont souvent la raison principale de l'échec de prouver return
-ness.
Je suis en utilisant VS2015 mise à Jour 3.