C# - 引用 "this int"参数

标签 c# int bit-manipulation this ref



我有非常简单的按位运算符方法,我想像这样使用:

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/

相关文章:

c++ - 条件下的按位操作设置变量

c# - 如何通过 System.Data.SQLite 检索 F# 查询表达式的 SQL 查询字符串?

ios - 隐式转换失去整数精度:警告,64位平台的代码

C:同时从管道 char 和 int 读取(棘手的一个)

c# - 如何将 4 个字节组合成一个 32 位无符号整数?

C#。带位运算的逻辑谜题。只设置了一位?

c# - 电子签名 c# asp.net

c# - 您可以在 WCF 服务和托管它的 Windows 服务之间进行通信吗?

c# - 如何在 C# 中将 Excel.Range.Interior.Color 转换为 System.Drawing.Color?

c++ - 在使用 ceil 的 C++ 中,除法不起作用?