我有一个称为BoolReference的自定义类。我正在使用隐式强制转换将布尔值分配给此类,而不调用其Value属性。这是第二种强制转换方法导致堆栈溢出的代码,有人可以帮助我解决此问题吗?
[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;
using System.Collections;
using System.Collections.Generic;
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);
}
}
...打印:
false true