Nachstehender Code kompiliert in VS2015.2, aber nach Aktualisierung auf VS2015.3 schlägt er mit error CS0019: Operator '==' cannot be applied to operands of type 'Registration<Something>' and 'Something'
fehl.Kombination aus impliziter Konvertierung, Gleichheitsoperator und NULL-Werten kann nach Aktualisierung von Visual Studio 2015.2 auf 2015.3 nicht kompiliert werden
public class Class1
{
public Class1()
{
var a = new Registration<Something>();
var x = a == Something.Bad; // this line fails in VS2015.3
}
}
public struct Registration<T> where T:struct
{
public static implicit operator T?(Registration<T> registration)
{
return null;
}
}
public enum Something
{
Good,
Bad
}
ich keine über eine solche Änderung im Changelog für die Aktualisierung finden 3. mir jemand sagen kann, warum dies geschieht? Und welches ist das richtige Verhalten?
BEARBEITEN: Kombination von impliziter Konvertierung, Gleichheitsoperator und Nullwerten ... und enums. Dies scheint nur zu versagen, wenn T ein Enum ist.
'a == (Etwas?) Something.Bad' scheint zu arbeiten, weiß nicht, warum das geändert .... und R # natürlich beschwert sich über diese unnötige Besetzung ... –
Ja, es funktioniert mit einem Cast. Und es funktioniert auch mit einer expliziten Konvertierung auf der linken Seite. – asgerhallas