dotnet/roslyn

IDE0200 (remove unnecessary lambda expression) can change semantics when capturing writable members

Open

#73.259 geöffnet am 29. Apr. 2024

Auf GitHub ansehen
 (6 Kommentare) (3 Reaktionen) (0 zugewiesene Personen)C# (4.257 Forks)batch import
Area-IDEBugFeature - IDE0200help wanted

Repository-Metriken

Stars
 (20.414 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 6T 17h) (256 gemergte PRs in 30 T)

Beschreibung

Version Used:

Steps to Reproduce:

public class Test {
  private List<int> _list = [1];

  public bool N() {
    var func = M();
    _list = [2];
    return func(2);
  }

  private Func<int, bool> M() {
    return x => _list.Contains(x); // IDE0200
  }
}

Diagnostic Id: IDE0200

Expected Behavior: The code fix should not be offered. It changes the semantics.

Actual Behavior: After applying the code fix, N returns false instead of true

I saw that this was fixed when capturing locals in #69101

Contributor Guide