Aşağıdaki kod, VS2015.2'de derler, ancak VS2015.3'e yükseltildikten sonra error CS0019: Operator '==' cannot be applied to operands of type 'Registration<Something>' and 'Something'
ile başarısız olur.örtük dönüştürme, eşitlik operatörü ve nullables kombinasyonu, Visual Studio 2015.2'den 2015.3'e güncelleştirildikten sonra derlenemiyor.
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
}
ben bunun neden böyle 3. Birisi bana söyleyebilir güncelleme için değişmek böyle bir değişiklik, hakkında herhangi bir haber bulamıyorum
? Ve doğru davranış hangisidir?
DÜZENLEME: Kapalı dönüşüm, eşitlik operatörü ve nullables ... ve enumların birleşimi. Bu sadece T bir enum olduğunda başarısız gibi görünüyor.
'a == (Something?) Bir şey olarak izliyoruz.Bad 'işe yarıyor gibi görünüyor, bunun neden değiştiğini bilmiyorum .... ve R # tabiki bu gereksiz dökümden şikayet ediyor ... –
Evet, bir yayınla çalışır. Ve aslında sol tarafta da açık bir dönüşümle çalışıyor. – asgerhallas