dotnet/roslyn

Confusing error when assigning result of ref readonly-returning method to a ref local

开放

#28,653 创建于 2018年7月18日

 (0 条评论) (0 个反应) (0 位负责人)C# (4,257 个派生)batch import
Area-CompilersBugConcept-Diagnostic Clarityhelp wanted

仓库指标

星标
 (20,414 个星标)
PR 合并指标
 (平均合并 6天 17小时) (30 天内合并 256 个 PR)

描述

Version Used: 2.8.2; master from 14 July 2018 (c4189de08b943f87d9f03d45ef01e615800e359d)

Steps to Reproduce:

Try to assign the result of a ref readonly-returning method to a non-readonly ref local:

class C
{
    void M()
    {
        ref int x = ref Bar();
    }
    
    ref readonly int Bar() => throw null;
}

Actual Behavior:

error CS8329: Cannot use method 'C.Bar()' as a ref or out value because it is a readonly variable

I think this is not a good error message because:

  1. It's not correct: method is not a variable.
  2. It does not explain well what the error is and how to fix it.

贡献者指南