Zgaduję, że musisz podać referencję, bool nie można owinąć klasą "BoolWrapper", ponieważ bool ma miejsce, którego nie możesz lub nie chcesz modyfikować.
Można to zrobić!
Najpierw zadeklarować co każde odniesienie bool będzie wyglądać
/// <summary> A reference to a bool.</summary>
/// <param name="value">new value</param>
/// <returns>Value of boolean</returns>
public delegate bool BoolRef(bool? value = null);
Teraz można zrobić odniesienie do myBool jak ten
bool myBool; // A given bool that you cannot wrap or change
private bool myBoolRef(bool? value) {
if (value != null) {
myBool = (bool)value;
}
return myBool;
}
i używać go tak:
void myTestCaller() {
foo(myBoolRef);
}
void foo(BoolRef b) {
bool c = b(); // get myBool
b(true); // set myBool to true
}
Ta sama sztuczka działa dla innych typów wartości, takich jak int
Refactor tylko odwoływać się ?? –
Czy możesz wyjaśnić scenariusz, w którym będziesz potrzebować czegoś takiego? – shahkalpesh
dlaczego chcesz to zrobić? jeśli podasz więcej szczegółów, być może ktoś zrobi to, co naprawdę chcesz. – Zack