You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在C#单线程环境中,能否使a==1 && a==2 && a==3成立并输出Hurraa?

当然可以!在C#单线程环境下,我们有好几种巧妙的方法能让a == 1 && a == 2 && a == 3这个看似不可能的表达式返回true,进而执行Console.WriteLine("Hurraa")。下面给你拆解几个实用的方案:

方案1:自定义类型 + 重载相等运算符

我们可以定义一个类,内部维护一个可变的状态值,每次执行相等比较时先匹配当前值,再自动递增状态:

public class MagicA
{
    private int _currentValue = 1;

    // 重载==运算符,和整数比较时触发状态变更
    public static bool operator ==(MagicA instance, int target)
    {
        return instance._currentValue++ == target;
    }

    // 必须配套重载!=运算符以符合C#规范
    public static bool operator !=(MagicA instance, int target)
    {
        return !(instance == target);
    }

    // 重写Equals和GetHashCode,避免编译器警告
    public override bool Equals(object obj)
    {
        return obj is MagicA other && _currentValue == other._currentValue;
    }

    public override int GetHashCode()
    {
        return HashCode.Combine(_currentValue);
    }
}

// 测试代码
var a = new MagicA();
if (a == 1 && a == 2 && a == 3)
{
    Console.WriteLine("Hurraa");
}

原理:第一次比较a == 1时,_currentValue是1,匹配成功后自增为2;第二次比较a == 2时,当前值正好是2,匹配后自增为3;第三次a == 3完美匹配,整个表达式就变成true了。

方案2:利用隐式转换自动变更状态

另一种思路是通过隐式转换,让自定义类型在和整数比较时自动转换为递增的数值:

public class MagicA
{
    private int _currentValue = 1;

    // 定义隐式转换:把MagicA实例转成int时,返回当前值并自增
    public static implicit operator int(MagicA instance)
    {
        return instance._currentValue++;
    }
}

// 测试代码
var a = new MagicA();
if (a == 1 && a == 2 && a == 3)
{
    Console.WriteLine("Hurraa");
}

原理:当a和整数比较时,C#会自动触发隐式转换,每次转换都会返回当前的_currentValue然后自增。三次比较依次拿到1、2、3,自然满足条件。

方案3:用属性Getter实现动态值

如果不想自定义类,也可以用一个包含属性的类,让属性的Getter每次被访问时返回递增的值:

public class MagicHolder
{
    private int _aValue = 1;
    public int a
    {
        get { return _aValue++; }
    }
}

// 测试代码
var holder = new MagicHolder();
if (holder.a == 1 && holder.a == 2 && holder.a == 3)
{
    Console.WriteLine("Hurraa");
}

原理:每次访问holder.a时,Getter都会返回当前的_aValue然后自增。三次比较分别触发三次Getter调用,拿到的数值正好是1、2、3,表达式成立。

这些方案都依赖于单线程下的顺序执行,状态修改是按比较顺序依次进行的,不会出现并发导致的混乱,完全可靠。

内容的提问来源于stack exchange,提问作者zsubzwary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:17:50