c# evaluation - lambda expressions in immediate window for VS2015




watch 2017 (2)

This definitely works for me, looks like when I tick either Use Managed Compatibility Mode or Use the legacy C# and VB expression evaluators it stops working. Ensure those are unchecked.

I am running Visual Studio 2015, where people claim that lambda expressions are supported in immediate window, watch and other places. But that does not work for me. I created a new console application with the following code:

static void Main(string[] args)
{
    var list = new List<int> {1, 2, 3, 4, 5, 6, 7};
}

And then tried some simple lambdas in immediate window and watch as can be seen here:

And as you can see, it gives me "Expression cannot contain lambda expressions". I've looked in tools -> options -> debug settings but could not find anything related to the issue. The version I am running is VS2015 Enterprise, 14.0.24720.00 Update 1 What could be causing this issue?


Based on @Joel's answer. I fix his class (thanks for the base!)

/// <summary>
/// A textbox that supports a watermak hint.
/// Based on: https://.com/a/15232752
/// </summary>
public class WatermarkTextBox : TextBox
{
    /// <summary>
    /// The text that will be presented as the watermak hint
    /// </summary>
    private string _watermarkText;

    /// <summary>
    /// Gets or Sets the text that will be presented as the watermak hint
    /// </summary>
    public string WatermarkText
    {
        get { return _watermarkText; }
        set { _watermarkText = value; }
    }

    /// <summary>
    /// Whether watermark effect is enabled or not
    /// </summary>
    private bool _watermarkActive;
    /// <summary>
    /// Gets or Sets whether watermark effect is enabled or not
    /// </summary>
    public bool WatermarkActive
    {
        get { return _watermarkActive; }
        set { _watermarkActive = value; }
    }

    /// <summary>
    /// Create a new TextBox that supports watermak hint
    /// </summary>
    public WatermarkTextBox()
    {
        this.WatermarkActive = _watermarkActive;
        this.Text = _watermarkText;
    }

    protected override void OnCreateControl()
    {
        base.OnCreateControl();
        if (this.WatermarkActive)
            CheckWatermark();
    }

    protected override void OnGotFocus(EventArgs e)
    {
        base.OnGotFocus(e);
        CheckWatermark();
    }

    protected override void OnLostFocus(EventArgs e)
    {
        base.OnLostFocus(e);
        CheckWatermark();
    }        

    public void CheckWatermark()
    {
        if ((this.WatermarkActive) && String.IsNullOrWhiteSpace(this.Text))
        {
            ForeColor = Color.Gray;
            this.Text = _watermarkText;
        }
        else if ((this.WatermarkActive) && (!String.IsNullOrWhiteSpace(this.Text)))
        {
            if (this.Text == _watermarkText)
                this.Text = "";
            ForeColor = Color.Black;
        }
        else
            ForeColor = Color.Black;
    }
}




c# linq lambda visual-studio-2015 immediate-window