C# 你能装饰一个.Net方法而不是使用#pragma来抑制编译器警告吗?

C# 你能装饰一个.Net方法而不是使用#pragma来抑制编译器警告吗?,c#,C#,在我的C代码中,我有时使用#pragma来抑制编译器警告。例如,如果没有pragma,此代码将给出编译器警告: #pragma warning disable CS1998 public virtual async Task Initialize() { StartLogging(true, true); } #pragma warning restore CS1998 我似乎记得有一种方法可以做到这一点,那就是用属性来装饰方法,而不是使用#pragma

在我的C代码中,我有时使用
#pragma
来抑制编译器警告。例如,如果没有pragma,此代码将给出编译器警告:

#pragma warning disable CS1998
    public virtual async Task Initialize()
    {
        StartLogging(true, true);
    }
#pragma warning restore CS1998
我似乎记得有一种方法可以做到这一点,那就是用属性来装饰方法,而不是使用
#pragma
,但是我找不到文档。它是如何做到的?

在回答另一个问题时,法比奥展示了这项技术:

[System.Diagnostics.CodeAnalysis.SuppressMessage("Await.Warning", "CS4014:Await.Warning")]
static async Task StartWorkAsync()
{
    WorkAsync();
}
他接着指出

此代码的重要部分是第二个参数。“CS4014:”部分是抑制警告的部分。你可以在剩下的纸上写任何你想写的东西

SuppressMessageAttribute类的文档可用,其中概述了 源内抑制