You can define Boolean wrapper values โโand use CompareExchange overload for T where T : class , for example:
private static object TrueObj = true; private static object FalseObj = false; ... object val = TrueObj; object result = Interlocked.CompareExchange(ref val, TrueObj, FalseObj); if (val == FalseObj) {
source share