Aşağıdaki kod, çalışma zamanında bir istisna atarken, geleneksel şekilde yapmak sorun olmadan derleniyor? Ben tam olarak dönüştürülmesi gerekir hangi ifade belirleyemeyeceğinden,İkili işleci Çarpanı, 'System.Int32' ve 'System.Double' türleri için tanımlanmamıştır.
var left = Expression.Constant(25d);
var right = Expression.Constant(20);
// Throws an InvalidOperationException!
var multiplyExpression = Expression.Multiply(left, right);
var multiply = 25d * 20;
Debug.WriteLine(multiply.ToString()); // Works normally!
Ben Expression.Convert
kullanmaz.
Geleneksel yoldan, derleyici, hangi ifadenin dönüştürüleceğini belirlemek için öncelik kuralları kullanarak bir 'Expression.Convert' - (moral karşılığı) ifadesini ekler. –
C# derleyici bu durumda hangi ifadeyi dönüştürdü? –
Sadece "çarpan" türünü kontrol edin, hangi tarafın dönüştürüleceğini size söyleyecektir. – MerickOWA