Error del compilador CS1951
Actualización: noviembre 2007
Mensaje de error
Una expresión lambda de árboles de expresión no puede contener un parámetro out o ref.
An expression tree lambda may not contain an out or ref parameter.
Un árbol de expresión sólo representa expresiones como estructuras de datos. No hay ninguna manera de representar ubicaciones de memoria concretas al pasar un parámetro por referencia.
Para corregir este error
- La única opción es quitar el modificador ref en la definición de delegado y pasar el parámetro por valor.
Ejemplo
El ejemplo siguiente genera el error CS1951:
// cs1951.cs
using System.Linq;
public delegate int TestDelegate(ref int i);
class Test
{
static void Main()
{
System.Linq.Expressions.Expression<TestDelegate> tree1 = (ref int x) => x; // CS1951
}
}