ReSharper 2023.3 Help

Make Method/Property Static refactoring

This refactoring allows you to convert an instance method or a property to a static one. All calls, implementations and overrides are automatically corrected.

If the converted instance method uses instance members, ReSharper helps you add the necessary parameter representing this to apply these usages to. If the converted instance property uses instance members, the refactoring is not available.

In the example below, we use this refactoring to convert an instance method Merge of the Info class into a static method. After refactoring, usages of instance properties Id and Name are applied to the new parameter i1:

class Info { string Id { get; set; } string Name { get; set; } Info Merge(Info other) { return new Info { Id = Id + other.Id, Name = Name + other.Name }; } void Test() { var i1 = new Info() { Id = "123", Name = "AA" }; var i2 = new Info() { Id = "456", Name = "BB" }; var merged = i1.Merge(i2); } }
class Info { string Id { get; set; } string Name { get; set; } static Info Merge(Info info, Info other) { return new Info { Id = info.Id + other.Id, Name = info.Name + other.Name }; } void Test() { var i1 = new Info() { Id = "123", Name = "AA" }; var i2 = new Info() { Id = "456", Name = "BB" }; var merged = Merge(i1, i2); } }

Make a method or property static

  1. Place the caret at the declaration or a usage of an instance method or property in the editor, or select it in the File Structure window.

  2. Do one of the following:

    • Press Control+Shift+R and then choose Make Static.

    • Right-click and choose Refactor | Make Static from the context menu.

    • Choose ReSharper | Refactor | Make Method Static… from the main menu.

    The Make Static dialog will open.

  3. If the method uses instance members, it is recommended to select the option Add 'this' as parameter of [type name]. In this case, ReSharper adds the necessary parameter to apply these usages to. If necessary, you can either go without adding the parameter or apply the parameter to some of the instance member usages. In these cases, after refactoring you might have to correct the invalid usages of instance in static context manually.

  4. To apply the refactoring, click Next.

  5. If no conflicts are found, ReSharper performs the refactoring immediately. Otherwise, it prompts you to resolve conflicts.

ReSharper. 'Make Static' refactoring

This feature is supported in the following languages and technologies:

Language: C#

Language: VB.NET

Language: C++

Language: HTML

Language: ASP.NET

Language: Razor

Language: JavaScript

Language: TypeScript

Language: CSS

Language: XML

Language: XAML

Language: Resx

Language: Build Scripts

Language: Protobuf

Language: JSON

Feature is available in C#

Feature is available in Visual Basic

Feature is not available in C++

Feature is not available in HTML

Feature is not available in ASP.NET

Feature is available in Razor

Feature is not available in JavaScript

Feature is not available in TypeScript

Feature is not available in CSS

Feature is not available in XML

Feature is not available in XAML

Feature is not available in Resource files

Feature is not available in build script files

Feature is not available in Protobuf

Feature is not available in JSON

The instructions and examples given here address the use of the feature in C#. For more information about other languages, refer to corresponding topics in the ReSharper by language section.

Last modified: 18 March 2024