Das folgende Programm kompiliert fein in Visual Studio 2015 Update 2 negiert Zurückkehren, sondern ein "Cast ist redundant" Warnung erzeugt wird:"Cast ist redundant" Warnung, wenn bool
class Program
{
static void Main(string[] args)
{
Program p = new Program();
bool negated = p.NegateBool(true);
}
public bool NegateBool(object value)
{
// "Cast is redundant" warning.
return !(bool)value;
// No warning.
//return (bool)value;
// No warning.
//var negated = !(bool)value;
//return negated;
}
}
Wenn die "Quick Fix" zu akzeptieren Vorschlag, die Besetzung zu entfernen, kompiliert das Programm nicht mehr.
Dies geschieht nur, wenn die Umwandlung direkt in der return-Anweisung erfolgt und der Negationsoperator verwendet wird.
Wenn das Ergebnis in eine Variable eingegeben und dann zurückgegeben wird, wird keine Warnung generiert.
Weiß jemand, warum das passiert?
Sie sollten wahrscheinlich einen Fehlerbericht mit dem Roslyn Team einreichen. Sie sind auf Github und normalerweise sehr hilfreich. – Joey
Ja, bitte melden Sie einen Fehler auf https://github.com/dotnet/roslyn, falls Sie dies noch nicht getan haben. –
Ich habe jetzt einen Fehlerbericht eingereicht. –