这个名字()真的是一个递归调用吗?

时间:2016-03-18 17:32:36

标签: c# recursion resharper nameof

我正在使用C#进行ConfigurationSection。我决定使用nameof(PropertyName)而不是硬编码字符串来利用一些C#6功能。

然而,我从Resharper得到一个关于递归调用的奇怪结果。

以下是一个例子:

Recursive Warning

我可以看到为什么它会发出这个警告,因为该属性本身就被引用了。但我不相信这是实际递归。

这次电话有什么我需要担心的吗?

1 个答案:

答案 0 :(得分:6)

除非this[string]调用CoreApiRootUrl,否则它不是递归的。

你是对的nameof(...)根本没有打电话。

我刚刚验证了我在一个小型测试类中看到了同样的错误(使用R#10.0.1):

public class Bug
{
    public string this[string x] => "";

    public string Foo
    {
        get { return this[nameof(Foo)]; } // Warning here
    }
}

奇怪的是,如果我将Foo更改为表达式身体属性:

public string Foo => this[nameof(Foo)];

我没有看到警告。

绝对是一个R#bug - 用Jetbrains提交它。