如果未使用 return 值,是否可能会收到警告?

Is it possible to get a warning if return value is not used?

我有一个 returns 值的扩展方法。在这种情况下,它应该在一个字节中设置一个特定的位:

public static byte SetBit(this byte b, int bitNumber, bool value)
{
    if (value)
    {
        return (byte)(b | (1 << bitNumber));
    }
    return (byte)(b & ~(1 << bitNumber));
}

返回值需要重新赋值给一个变量,因为我无法组合thisref:

byte myByte = 3;
myByte = myByte.SetBit(1, false);

很容易不小心忘记作业。有人可能会认为该方法直接更改值。

对于 String.Replace,ReSharper/Visual Studio(?) 警告我 Return 纯值方法未使用:

这在某种程度上也适用于我的方法吗?

更新:

现在 System.Diagnostics.Contracts 命名空间中有一个 PureAttribute

[Pure]
public byte Foo()
{
    //...
}

Pre .NET Standard 2.0 答案:

似乎有 ReSharper Annotations 的 Nuget 包。

这包括 MustUseReturnValueAttribute:

[MustUseReturnValue("Use the return value to...")]
public byte Foo()
{    
}

正如@Kirk Woll 在评论中指出的那样,也可以编写自定义 Roslyn Analyzer.