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
    }
}

Vea también

Conceptos

Árboles de expresiones