首页 > 解决方案 > 我可以在本地函数中专门为参数设置命名样式吗?

问题描述

当我在 C# 中使用局部函数时,我希望它们保持纯净,而不依赖于捕获局部变量。由于我不能将我的参数命名为与函数外部的局部变量相同,由于名称冲突,我想在它们前面加上下划线,以便为此制定一个通用的工作策略。

bool MyLocalFunction(string _str)
{
    //...
}

var str = "";

var isValid = MyLocalFunction(str);

是否可以让 ReSharper 在所有本地函数中强制执行此命名,同时不影响常规方法中参数的命名?我在设置中找不到那个选项。

标签: resharper

解决方案


如果您使用的是 C# 8.0(.NET Core 3.x 和 .NET Standard 2.1),那么您可以使用静态本地函数。例如:

using System;

namespace ConsoleAppLocalFunction
{
    public static class Program
    {
        public static void Main()
        {
            var first = "Foo";
            var last = "Bar";
            Console.WriteLine(LocalMethod1("Test", "Message"));
            Console.WriteLine(LocalMethod2());

            static string LocalMethod1(string first, string last) => first + last;
            string LocalMethod2() => first + last;
        }
    }
}

当你运行它时,结果将是:

TestMessage

FooBar

LocalMethod1使用参数并且无权访问局部变量,LocalMethod2将使用局部变量。

我认为您不能将 ReSharper 配置为使用本地方法参数的命名样式。


推荐阅读