2016-08-02 6 views
5

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.

+1

'a == (Etwas?) Something.Bad' scheint zu arbeiten, weiß nicht, warum das geändert .... und R # natürlich beschwert sich über diese unnötige Besetzung ... –

+0

Ja, es funktioniert mit einem Cast. Und es funktioniert auch mit einer expliziten Konvertierung auf der linken Seite. – asgerhallas

Antwort