我有一个扩展方法,它返回一个值。在这种情况下,它应该在一个字节中设置一个特定的位:
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?/ VisualStudio?警告我,不使用纯方法的返回值:
我的方法在某种程度上也可以吗?
答案 0 :(得分:6)
这包括MustUseReturnValueAttribute
[MustUseReturnValue("Use the return value to...")]
public byte Foo()
{
}
正如@Kirk Woll在评论中指出的那样,也可以编写自定义Roslyn Analyzer