【问题标题】:Can I set the naming style for parameters specifically in local functions?我可以在本地函数中专门为参数设置命名样式吗?
【发布时间】:2020-04-23 11:49:49
【问题描述】:

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

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

var str = "";

var isValid = MyLocalFunction(str);

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

【问题讨论】:

    标签: resharper


    【解决方案1】:

    如果您使用的是 C# 8.0(.NET Core 3.x 和 .NET Standard 2.1),那么您可以使用 static local functions。例如:

    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 配置为使用本地方法参数的命名样式。

    【讨论】:

    • 谢谢,我暂时还坚持使用 C#7。
    • 很抱歉,您可以使用标准的非本地函数。
    猜你喜欢
    • 2012-07-25
    • 1970-01-01
    • 2019-03-10
    • 1970-01-01
    • 2019-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多