ReSharper quick-fix 'Use object initializer' action produces code that does not compile



R# 2016.3.1


Here is a small fragment of code (simplified for clarity).  It is taking a copy of an existing byte buffer and setting the value of the last byte within the copy to a specific value.

var bufferCopy = new List<byte>(buffer);
bufferCopy[bufferCopy.Count - 1] = 40;

ReSharper places a green zigzag line under the word 'new' and suggests the use of an object initialiser ('Use object initializer').

If I accept the suggestion, ReSharper changes the code to this:

var bufferCopy = new List<byte>(buffer) {[bufferCopy.Count - 1] = 40};

The changed code does not compile.  The fragment 'bufferCopy.Count - 1' is underlined in red and the following errors are shown:

  • Cannot use local variable 'bufferCopy' before it is declared
  • Operator '-' cannot be applied to operands of type 'method group' and 'int'

I don't think that the use of an initialiser is possible in this case and ReSharper should not be suggesting it.

Comment actions Permalink
Official comment

Hello David

You are welcome to comment and follow request.


Comment actions Permalink

Great!  I didn't really think that I was the first to come across this. :-)


Please sign in to leave a comment.