隐式转换在 Unity 中导致 StackOverflowException

Implicit cast caused StackOverflowException in Unity

我有一个名为 BoolReference 的自定义 Class。 我正在使用隐式转换为这个 class 分配 bool 值,而不调用它的值 属性。 这是第二个转换方法导致堆栈溢出的代码,有人可以帮我解决这个问题吗?

[System.Serializable]
public class BoolReference {
[SerializeField]
private BoolVariable Variable;

public bool Value {
    get => Variable.Value;
    set {
        Variable.Value = value;
    }
}

public static implicit operator bool(BoolReference bRef) => bRef.Value;
public static implicit operator BoolReference(bool b) => b;

}

这是导致异常的用法

public BoolReference IsInPlay;

void Awake() {
    IsInPlay = false;    
}

如果我写IsInPlay.Value = false,那么一切正常

实际上在转换运算符中返回一个 BoolReference 对我有用:

using System;

public class BoolVariable {
    public bool Value;
}

public class BoolReference {

private BoolVariable Variable;

public bool Value {
    get => Variable.Value;
    set {
        Variable.Value = value;
    }
}

public static implicit operator bool(BoolReference bRef) => bRef.Value;
public static implicit operator BoolReference(bool b){
    BoolReference br = new BoolReference();
    br.Variable = new BoolVariable();
    br.Value=b;
    return br;
}

}   
public class Program
{
    static BoolReference r;
    public static void Main()
    {
        r = false;
        Console.WriteLine(r);
        r = true;
        Console.WriteLine(r);
    }
}

...which prints:

false
true