C# - 从bool转换为bool *

时间:2016-02-06 02:00:47

标签: c# methods casting boolean

我需要使用特定的方法来完成工作 - 它不能是任何其他方法或程序集。该方法采用以下参数:

void method(bool* isOn) {/* Some code... */}

我尝试对参数'isOn'使用false,但Visual Studio告诉“参数1:无法从类型'bool'转换为'bool *'”。

如何转换/使用bool *以使其正常运作?

提前致谢。

编辑:这不是Usefulness of bool* in C#的重复,因为我特别询问从指针到类型和类型本身的转换。另外,提到的线程要求使用bool *,但不能直接回答我的问题。

2 个答案:

答案 0 :(得分:4)

您无法传递false,因为常量没有地址。

要将指针传递给false,请创建一个变量,将其设置为false,然后使用&运算符来获取变量的地址:

unsafe class Program {

    static void foo(bool* b) {
        *b = true;
    }

    static void Main(string[] args) {
        bool x = false;
        Console.WriteLine(x); // Prints false
        foo(&x);
        Console.WriteLine(x); // Prints true
    }

}

注意如何允许该方法通过指针更改变量。

答案 1 :(得分:3)

bool *是指向bool类型变量的指针,而不是bool值类型。意味着你需要传递的是对布尔变量的内存引用,而不是布尔值类型本身:

https://msdn.microsoft.com/en-us/library/z19tbbca.aspx

当你调用方法时,你应该做的是:

bool isOn=false;

method(&isOn);   

&安培; address运算符返回参数似乎需要的内存地址引用。

https://msdn.microsoft.com/en-us/library/sbf85k1c.aspx

注意,您可能需要使用不安全的上下文/编译器选项来实现此功能,但假设您已经来自您所说的内容。