如果未使用 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));
}
返回值需要重新赋值给一个变量,因为我无法组合this
和ref
:
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.
我有一个 returns 值的扩展方法。在这种情况下,它应该在一个字节中设置一个特定的位:
public static byte SetBit(this byte b, int bitNumber, bool value)
{
if (value)
{
return (byte)(b | (1 << bitNumber));
}
return (byte)(b & ~(1 << bitNumber));
}
返回值需要重新赋值给一个变量,因为我无法组合this
和ref
:
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.