我有非常简单的按位运算符方法,我想像这样使用:
myInt.SetBit(int k, bool set)
以便它将索引“k”处的位更改为值“set”(0 或 1)我首先想到这样做:
public static void SetBit(this int A, int k, bool set) {
if (set) A |= 1 << k;
else A &= ~(1 << k);
}
但是当然这只会改变变量“A”的内部值,而不是原始变量,因为整数不是引用类型。
我不能将“ref”与“this”一起使用,所以我不知道如何将其转换为引用参数。
我已经为 Int 数组提供了类似的方法,但这些方法工作正常,因为数组是引用类型。
我正在寻找一种方法来为单个整数保留这种方便的语法(如果有的话)。
最佳答案
您不应将其视为引用类型。
让您的方法返回修改后的值并将其分配回您的变量。该方法将与不可变类型保持一致。考虑 String.Replace
的示例,它不会就地修改字符串,而是返回修改后的副本。
public static int SetBit(this int A, int k, bool set)
{
if (set) A |= 1 << k;
else A &= ~(1 << k);
return A;
}
关于C# - 引用 "this int"参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38975051/