ReSharper
 
Get ReSharper
Get your hands on the new features ahead of the release by joining the Early Access Program for ReSharper 2025.1! Learn more

Code inspection: Parameter hides primary constructor parameter

Last modified: 11 February 2024

Initializing a using variable with an object initializer might be a problem if an exception is thrown during the initialization. This is possible because the compiler creates and initializes the object before the execution enters the using clause. If an exception is thrown during the initialization, the program will never enter the using clause and the object will not be disposed.

In the example below, the parameter str of the Print() method has the same name as the primary constructor parameter of the MySample class, but it is still clear that Console.WriteLine(str); will print out two.

Now imagine that MySample and Print() are lengthy declarations with multiple parameters. In this case, readers of the code may miss the str parameter in the method and assume that Console.WriteLine(str); will print out one, received during the object creation.

To avoid confusion and potential errors, rename the method parameter.